你的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/
也可以直接使用下面命令下载:
下载到服务器上,使用命令解压,以1.4.29版本为例:
tar xf msmtp-1.4.29.tar.bz2
cd msmtp-1.4.29
./configure --prefix=/usr/local/msmtp
编译的结果如下:
结果如上图可继续安装:
2、配置msmtp
在你自己的主目录中新建.msmtprc(注意,msmtprc前面有个点),除给与拥有者读写权(0600,-rw-------)以外不要再有多余。
以Gmail邮箱为例,配置文件内容:
保存退出。
测试一下:
随便输入一些内容然后按 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@t4game.com
去邮箱看看是否收到邮件。注意这样修改以后mail的log不会写在 /var/log/maillog上了,而是~/.msmtp.log
备注:如果输入mail提示:
-bash: mail: command not found
则需要输入命令安装mail
如果输入ftp提示:
-bash: ftp: command not found
则需要输入命令安装ftp客户端
5.x版本的执行:
6.x版本的执行:
-------------------------End-------------------------
其实很简单,看了msmtp官方文档后才发现原来用msmtp+mail来发邮件竟然比msmtp+mutt还要简单.
1、安装msmtp
官方地址:http://sourceforge.net/projects/msmtp/files/msmtp/
也可以直接使用下面命令下载:
wget -c http://clang.googlecode.com/files/msmtp-1.4.29.tar.bz2
下载到服务器上,使用命令解压,以1.4.29版本为例:
tar xf msmtp-1.4.29.tar.bz2
cd msmtp-1.4.29
./configure --prefix=/usr/local/msmtp
编译的结果如下:
Install prefix ......... : /usr/local/msmtp
TLS/SSL support ........ : yes (Library: OpenSSL)
GNU SASL support ....... : no
GNU Libidn support ..... : yes
NLS support ............ : yes
GNOME Keyring support .. : no
MacOS X Keychain support : no
TLS/SSL support ........ : yes (Library: OpenSSL)
GNU SASL support ....... : no
GNU Libidn support ..... : yes
NLS support ............ : yes
GNOME Keyring support .. : no
MacOS X Keychain support : no
结果如上图可继续安装:
make && make install
2、配置msmtp
在你自己的主目录中新建.msmtprc(注意,msmtprc前面有个点),除给与拥有者读写权(0600,-rw-------)以外不要再有多余。
以Gmail邮箱为例,配置文件内容:
defaults
logfile ~/.msmtp.log
#Gmail
account t4game
tls on
auth on
host mail.t4game.com
port 25
from monitor@t4game.com
tls_certcheck off
user monitor@t4game.com
password 1qaz@t4game
account default : t4game
logfile ~/.msmtp.log
#Gmail
account t4game
tls on
auth on
host mail.t4game.com
port 25
from monitor@t4game.com
tls_certcheck off
user monitor@t4game.com
password 1qaz@t4game
account default : t4game
保存退出。
测试一下:
/usr/local/msmtp/bin/msmtp xxx@t4game.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@t4game.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
-------------------------End-------------------------