Python中国社区  »  分享创造

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

爱情的枪 • 2 年前 • 2098 次点击  

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
 
2098 次点击  
分享到微博
文章 [ 1 ]  |  最新文章 2 年前
爱情的枪
Reply   •   1 楼
爱情的枪    2 年前

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"
分享
社区所有版块导航
Python
python开源   Python   DjangoApp   pycharm   Django  
DATA
Elasticsearch   docker  
WEB开发
linux   Git   web工具   bottle   zookeeper   MongoDB   IE   tornado   Redis   MQ   NoSql   DATABASE   Bootstrap   NGINX   Jquery   js   其他Web框架   peewee  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广