天天看点

mutt+msmtp轻松实现邮件自动发送功能

由于使用telnet 25端口发送邮件丢件率较高,所以改进了发送的方式。

原先使用3种自动发送邮件的方式:

1、expect编写一段telnet到邮件服务器的脚本,这个方法很多服务器是拒绝被使用的,而且丢信率太高。

2、搭建一个MTA(邮件传输代理),sendmail或POSTFIX都能很好的实现邮件转发功能,缺点是只能使用本机的mail域名发送给用户,而且在不需要安装MTA的服务器上无法实现自动发送功能。

3、mutt+msmpt+shell,轻松实现邮件自动发送并且使用灵活,不需要MTA也能发送信件。

三种方案中的第三种比较适合我现在的需求。

mutt是一个MUA(邮件用户代理),本身不负责发送邮件或接收邮件,如果需要发送邮件需要调用msmtp,msmtp是一个简单灵活的MTA,并且设置极为方便。

使用环境:centos4.1

默认默认环境已安装mutt1.4.1

msmpt1.4.3 从[url]http://rpm.pbone.net/index.php3/stat/4/idpl/2816543/com/msmtp-1.4.3-2.i586.rpm.html[/url]下载

rpm -ivh msmtp-1.4.3-2.i586.rpm

安装完毕后开始设置mutt和msmtp。

MUTT

系统全局设置/etc/Muttrc,如果使用某个系统用户,可以在~/.muttrc中设置。

vi .muttrc

set sendmail="/usr/bin/msmtp -a your_account"

set realname="your_email"

set use_from=yes

set editor="vim"

MSMTP

创建~/.msmtprc和~/.msmtp.log,分别为配置和日志文件。

vi .msmtprc

account default

host smtp.domain.com

from your_email_address

tls on

auth on

user [email][email protected][/email]

password your_password

account default : dominic

由于password是明码,所以我们需要修改此文件的权限。

chmod 600 .msmtprc

到这里,你可以使用mutt来发送邮件了,我们测试一下。

echo "test" |mutt -s "my_first_test" [email][email protected][/email] -c [email][email protected][/email]

-s "subject"

-c "carbon-copy"

观察.msmtp.log文件,如果有错会在日志文件中被报告出来,当然,成功发送的日志也会出现在此日志文件内。

到这里发送邮件的过程已经全部完成,接下来要做的事就简单了,我们假设每天凌晨定时发送信件给公司某用户,可以编写脚本处理。

mail.sh

#!/bin/sh

content="you can tell your colleague what something to do at tomorrow"

echo "$content" |mutt -s "hi Jacky" Jacky's_email

继续阅读