很多服务器上运行的脚本都是通过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