╃苍狼山庄╃╃苍狼山庄╃

Clang出品,
必属精品!

你的linux mail命令经常发不出去邮件吗?msmtp帮你轻松搞定(mail也可以用外部邮箱)

很多服务器上运行的脚本都是通过mail来发送通知的,但是当没有邮件服务器的时候通过mail发送的邮件经常被 对方的邮件服务器拒绝掉。之前我发过用msmtp+mutt来解决这个问题,但后来发现有些情况不得不用mail,比如说已经有n多脚本在跑,或者其他什么原因不能用mutt的时候。
其实很简单,看了msmtp官方文档后才发现原来用msmtp+mail来发邮件竟然比msmtp+mutt还要简单.
1、安装msmtp
官方地址:http://sourceforge.net/projects/msmtp/files/msmtp/
也可以直接使用下面命令下载:

wget -c https://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download -O msmtp-1.4.32.tar.bz2


下载到服务器上,使用命令解压,以1.4.32版本为例:

tar xf msmtp-1.4.32.tar.bz2
cd msmtp-1.4.32
./configure --prefix=/usr/local/msmtp

编译的结果如下:

结果如上图可继续安装:

make && make install



2、配置msmtp
在你自己的主目录中新建.msmtprc(注意,msmtprc前面有个点),除给与拥有者读写权(0600,-rw-------)以外不要再有多余。
以Gmail邮箱为例,配置文件内容:

defaults
logfile ~/.msmtp.log
#Gmail
account gmail
tls on
auth on
host smtp.gmail.com
port 587
from xxx@gmail.com
tls_certcheck off
user xxx@gmail.com
password youPassword
account default : gmail


保存退出。
测试一下:

/usr/local/msmtp/bin/msmtp xxx@gmail.com


随便输入一些内容然后按 ctrl+d 退出,看看是否收到邮件,发件人是不是xxx@gmail.com,收到后则一切正常。
最后再做一步,就能让mail利用msmtp发送邮件了。
3、配置mail
修改/etc/mail.rc在里面加入一条或者在发送邮件的用户的home目录下增加一个.mailrc(注意中间没有 ".") 的文件插入下面一行:

set sendmail="/usr/local/msmtp/bin/msmtp"


保存退出,测试

echo "this is a test mail" | mail -s "TEST mail" xxx@gmail.com 


去邮箱看看是否收到邮件。注意这样修改以后mail的log不会写在 /var/log/maillog上了,而是~/.msmtp.log

备注:如果输入mail提示:

-bash: mail: command not found

则需要输入命令安装mail

yum -y install mailx


如果输入ftp提示:

-bash: ftp: command not found

则需要输入命令安装ftp客户端
5.x版本的执行:

rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/ftp-0.17-35.el5.i386.rpm

6.x版本的执行:

rpm -Uvh http://mirror.centos.org/centos/6/os/i386/Packages/ftp-0.17-51.1.el6.i686.rpm

本原创文章未经允许不得转载 | 当前页面:╃苍狼山庄╃ » 你的linux mail命令经常发不出去邮件吗?msmtp帮你轻松搞定(mail也可以用外部邮箱)

评论

文章评论已关闭!