centos7发送邮件(2):msmtp和mutt发送邮件
一. 简介
前面我们介绍了用mailx发送邮件,smtps和starttls的配置支持真心烦琐,哥们搜索了好久才发送成功,不容易。
简单点,发邮件的方式简单点?好,用msmtp和mutt吧。使用简单,配置也简单,让你分分钟上手。
二. msmtp
msmtp是一款专门负责邮件发送的SMTP客户端软件,基于GPL发布。支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。
msmtp是专门处理smtp发送的,有了它我们不必再为了发送smtps而思考。
安装
wget https://jaist.dl.sourceforge.net/project/msmtp/msmtp/1.6.6/msmtp-1.6.6.tar.xz
tar xvf msmtp-1.6.6.tar.xz
cd msmtp-1.6.6
./configure --prefix=/usr/local/msmtp --with-tls=openssl
make
make install
配置
#log
mkdir -p /var/log/msmtp/
touch /var/log/msmtp/msmtp.log
#msmtprc
mkdir -p /usr/local/msmtp/etc
cd /usr/local/msmtp/etc
touch msmtprc
163邮箱的smtps配置msmtprc文件如下
#################################
# Set default values for all following accounts.
defaults
logfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.
account mysmtp
# tls加密开启
tls on
tls_starttls off
tls_certcheck off
# SMTP邮件服务器地址
host smtp.163.com
# 端口
port 465
# 发送的邮件Email
from xxx@163.com
auth login
# 邮件服务器登录账号
user xxx@163.com
# 邮件服务器登陆密码
password xxx
# Set a default account
account default : mysmtp
#################
很简单,请自行将xxx换成自己的账号和密码。
执行下面命令,测试是否成功
echo "testmail" | /usr/local/msmtp/bin/msmtp xxx@163.com
二. mutt
安装
yum -y install mutt
配置
配置文件/etc/Muttrc虽然看着有点大,但里面全是注释,其实我们只需要将下面5个配置的注释去掉,并修改,就可以了
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set use_envelope_from=yes
set from="xxx@163.com"
set realname="xxx"
执行下面命令,测试是否成功
echo "testmail" |mutt -s "my_first_test" xxx@qq.com
二. 扩展知识
虽然完成了上面的配置,也把邮件发送了出去,但是我crond定时任务中的MAILTO=“xxx@qq.com”还是不起作用,这是为什么呢?
这就要来说说MUA、MTA、MDA了。
发送邮件一般过程是发送方MUA(Client)-> MTA(Server)-> MTA(Server)-> MDA(Server)
- MUA(Mail User Agent),即邮件用户代理,是Client端软件,它通过SMTP协议将电子邮件发送给MTA。常见的MUA有outlook、foxmail和mutt。
- MTA(Mail transfer Agent),即邮件传输代理,是主要的服务端软件,它使用SMTP协议将电子邮件从一台主机发送到另一台主机,如果目标就是自己的则收下。常见的MTA有sendmail、postfix。
- MDA(Mail Deliver Agent),即邮件投递代理,把收下的邮件发入正确的本地邮箱,一般和MTA的实现放到一起了,如postfix就有MDA功能。
接收邮件的过程是接收方MUA(Client)->MDA(Server)
用户用MUA通过IMAP/POP3协议与IMAP/POP3服务器(例如:Dovecot)进行收信操作,把MDA的本地邮箱中的信收下来。
根据上面的介绍,我们前面装的一堆程序都是属于MUA的。而crond中的mailto是直接将邮件发送给centos默认MTA的,所以接收不到邮件就理所当然了。
五. 总结
介绍下我平时用的两个命令
1. 发送邮件
echo "test" |mutt -s "my_first_a_test" 353443696@qq.com
2. 发送附件test.txt
echo "test" |mutt -s "my_first_a_test" 353443696@qq.com -a ~/test.txt
赶紧使用msmtp和mutt发送邮件吧,很简单。
参考: