概述:
为了方便
美国VPS的用户监控自己的系统运行情况,特写下此篇文章,目的是使用sSMTP和gmail帐号发邮件到自己的邮件,可能有些同学会说,使用sendmail, postfix,exim 等完整的邮件系统,不过也有一些不便:
- 完整的邮件系统配置相对复杂,而我只需要实现非常简单的监控邮件发送,有些杀鸡用牛刀了。
- 很多大型邮件系统,如新浪,会做IP地址反向DNS解析,会拒绝没有动态IP地址发送出来的邮件。
实际上,我要实现的目的就是发送告警邮件,并且希望减轻自己
VPS的负担。那么,不如在服务器上设置邮件客户端,通过gmail这样稳定的邮件服务系统来发送邮件。
配置环境
配置环境为
美国VPS 系统为:centos 5,在I386和x86_64 测试通过。
这里先约定下面内容:
发送邮件帐号:sendmail@gmail.com
密码:sendmailpasswd
安装
由于默认的仓库中没有包含
sSMTP,所以我们使用
Fedora’s EPEL repo
先安装EPEL repo
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm #i386平台安装这个
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm #x86_64平台安装这个
yum install ssmtp mailx #这里安装mailx,是由于下面要用到mail命令,此命令在mailx里
配置ssmtp
/bin/mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.OLD #备份原配置文件
vi /etc/ssmtp/ssmtp.conf #新建配置文件,输入如下内容
root=sentmail@gmail.com
mailhub=smtp.gmail.com:465
FromLineOverride=YES
UseTLS=YES
Hostname=sentmail@gmail.com
AuthUser=sentmail@gmail.com
AuthPass=sentmailpasswd
调整revaliases文件内容
echo 'root:sentmail@gmail.com:smtp.gmail.com:465' >> /etc/ssmtp/revaliases
备份sendmail程序
/bin/mv /usr/sbin/sendmail /usr/sbin/sendmail.OLD
ln -s /usr/sbin/ssmtp /usr/sbin/sendmail
测试
echo test | mail -s "testing ssmtp" youmail@youdomain.com
或者使用
ssmtp youmail@youdomain.com
按回车开始输入内容,ctrl+d结束内容发送
日志查看
[root@vps2 ~]# tail -f /var/log/maillog
Jul 30 18:26:59 vps2 sSMTP[16320]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection w3sm1998496ybl.21) uid=0 username=root outbytes=353
Jul 30 19:59:27 vps2 sSMTP[7708]: Creating SSL connection to host
Jul 30 19:59:27 vps2 sSMTP[7708]: SSL connection using RC4-MD5
Jul 30 19:59:32 vps2 sSMTP[7708]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection w6sm3517146anb.23) uid=0 username=root outbytes=405
Jul 30 21:16:11 vps2 sSMTP[25745]: Creating SSL connection to host
Jul 30 21:16:11 vps2 sSMTP[25745]: SSL connection using RC4-MD5
Jul 30 21:16:16 vps2 sSMTP[25745]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection d35sm3731749waa.9) uid=0 username=root outbytes=638
Jul 30 21:18:27 vps2 sSMTP[31881]: Creating SSL connection to host
Jul 30 21:18:27 vps2 sSMTP[31881]: SSL connection using RC4-MD5
Jul 30 21:18:31 vps2 sSMTP[31881]: Sent mail for sentmail@gmail.com (221 2.0.0 closing connection v38sm2544553wfh.0) uid=0 username=root outbytes=638
从上面可以看到成功发送邮件。
案例
结合定时cront和bash,我们可以编辑适合自己的监控脚本,下面简单写一个把磁盘信息发送给youmail@youdomain.com邮件
vi ssmtp.sh
#!/bin/sh
DATESTR=`date +"%m/%d/%Y"`
(echo -e "is is current disk usage: \n"; df -h ; echo -e "\n\nPlease cleanup if necessary.\n";)| mail -s "[server notification] $DATESTR " youmail@youdomain.com
参考资料:
http://www.187299.com/archives/1571
http://en.gentoo-wiki.com/wiki/HOWTO_Gmail_and_sSMTP
完整脚本
wget -N http://file.xingke.info/linux/bash/send-mail-with-gmail-and-ssmtp.sh;sh ./send-mail-with-gmail-and-ssmtp.sh