Python中国社区  »  分享创造

Linux下发送邮件利器 msmtp mutt 介绍

爱情的枪 • 3 年前 • 3084 次点击  

msmtp 是一款专门负责邮件发送的客户端软件,基于GPL发布,支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。

其主页是 msmtp.sourceforge.net:

  Msmtp is an SMTP client with a sendmail compatible interface ...

安装

  sudo apt-get install msmtp ca-certificates

如需要对TLS/SSL的支持,还需要安装 GnuTLS 或者 OpenSSL,官方推荐 GnuTLS (https://help.ubuntu.com/community/GnuTLS):

  sudo apt-get install gnutls-bin

msmtp 有 3 中工作模式:

  Sendmail mode (default)
  Server information mode
  Remote Message Queue Starting mode

对于发送邮件来说,使用 Sendmail mode (default) 就可以了:In the default sendmail mode, msmtp reads a mail from standard input and sends it to an SMTP server for delivery.   

配置 msmtp

安装完后,编辑 msmtp 配置文件 ~/.msmtprc ,root 用户编辑/etc/msmtprc

defaults
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account default
host smtp.gmail.com
port 587
auth on
user username@gmail.com
password mypass
from username@gmail.com
logfile ~/var/msmtp.log

username@gmail.com 和 mypass 替换成实际的邮箱和密码就可以了,这里密码是明文。注意,发送邮件默认是 25 端口,但是 Gmail 邮件服务商用的不是 25 端口,而是 465 或 587 端口。如果不设置端口,发送邮件会报错 "Must issue a STARTTLS command first"。logfile 如果设置的时候要注意设置访问权限,保证当前用户可写。

保存后,修改访问权限

  chmod 0600 .msmtprc

如果不这样,会报错:

  must have no more than user read/write permissions

测试发送邮件:

  msmtp XXX@example.com

输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。可以查看 logfile 里面的发送日志记录。

配置 mutt

没有mutt,单纯使用 msmtp是可以的,但是如果使用mutt,则发送邮件会变得异常简单。

查看 msmtp 安装路径

  $ which msmtp
  /usr/bin/msmtp

编辑 mutt 配置文件 ~/.muttrc , root 用户编辑/etc/Muttrc

set sendmail="/path/to/msmtp"
set use_from=yes
set realname="Your Name"
set from=you@example.com
set envelope_from=yes
set editor="vim"

后面就可以用 mutt 写邮件后通过 msmtp 发送了。

测试下

//带附件
# echo "邮件内容123456" | mutt -s "邮件标题测试邮件" -a /scripts/test.txt  test@126.com

//不代附件
# echo "邮件内容123456" | mutt -s "邮件标题测试邮件"  test@126.com test1@126.com

小结

对于 msmtp 的详细介绍,可以参考 http://msmtp.sourceforge.net/documentation.html 或者 man msmtp。

文档里面提供了配置示例,包括 msmtp 配合 mutt 的配置。

对于 mutt,还有很多需要配置,比如对多个邮件帐号的支持、分类文件夹等,这些会在后面的使用过程中逐渐完善。

注意

  • 多发件人的情况下, 以空格分隔每个收件人即可。

参考

http://jacmoe.dk/blog/2013/january/how-to-send-emails-with-msmtp-on-windows-or-linux-or-mac-os-x

mac下: http://my.oschina.net/uhziel/blog/186683

http://note.tc.edu.tw/725.html

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/810
 
3084 次点击  
分享到微博
文章 [ 1 ]  |  最新文章 3 年前
爱情的枪
Reply   •   1 楼
爱情的枪    3 年前

mac 下安装方式

$ brew install msmtp 
$ brew install mutt

配置msmtp

~/.msmtprc

defaults
tls on
tls_certcheck off
tls_starttls on
account 163
host smtp.163.com
port 25
auth on
user example@163.com
password password
from example@163.com
logfile ~/var/msmtp.log

account default: 163

其实mac不安装msmtp也可以,Mac下有一个默认的smtp服务,它会以mac自己的邮箱进行发送。

配置mutt

set sendmail=/usr/local/bin/msmtp
set use_from=yes
set realname=example
set from=example@163.com
set envelope_from=yes
set editor="vim"