使用mutt+msmtp做linux邮件客户端
这几天领导让我部署开发部门写的一个脚本,需要把脚本生成的附件通过email发到他的邮箱里面去。那就开始干吧,因为之前一直用mail 命令来发邮件,可是这次行不通了。因为要带附件。有人告诉我mail 命令也能带附件,可是我怎么也没找到相关的参数。可又不想搭个mail服务器,因为闲麻烦。
www.zhishiwu.com
于是就开始在网上找简单又有效的命令行客户端,还真让我找到了。那就是MUTT+MSMTP,看到网上好多文章,拿出几个来照着做了做,结果报各种各样的问题。
还是自己看看具体每个参数作用吧!
经过一番整理,去掉些没用的参数后测试成功。现在把具体的操作步骤写在下面:
我 的目的其实很简单,就是利用MUTT和MSMTP 登录163的邮件服务器发邮件。为什么非要登录163邮箱呢?因为我测试过qq邮箱、yahoo还有sina的邮箱都发布出去,只有163的一连就通了, 我估计是邮箱设置里验证的关系,也不想去深研究他了。下面给出具体步骤
首先去163申请个免费邮箱,收费免费都一样
下载MSMTP
wget http://nchc.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.17.tar.bz2
tar xvf msmtp-1.4.17.tar.bz2
cd msmtp-1.4.17
./configure --prefix=/usr/local/msmtp
make
make install
cd /usr/local/msmtp/
mkdir etc #配置文件目录和配置文件都要自己建
cd etc
vim msmtprc #手动创建配置文件
account default
host smtp.163.com #你的发送邮件服务器
port 25
from xman@163.com #要从哪个邮箱发出
auth login #这里如果使用on的话会报 "msmtp: cannot use a secure authentication method"错误
tls off
user xman@163.com #邮箱用户名
password xmanufo #邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性
logfile /var/log/mmlog
保存退出。
简单测试一下
/usr/local/msmtp/bin/msmtp xman@163.com
随便输入一些内容用ctrl+d结束。然后到邮箱看看有没有收到,如果这里提示错误按照错误代码找原因,或者看看上面的日志文件
下面开始安装 MUTT 如果是CentOS的话直接用yum就好了
yum install mutt
安装完成后要手动给他建立一个配置文件,
vim /etc/Muttrc
set sendmail="/usr/local/msmtp/bin/msmtp" #你的msmtp命令路径
set use_from=yes
set realname="xman@163.com"
set editor="vim"
简单的4行就可以了
好了,让我们来测试一下吧! www.zhishiwu.com
echo "testmail" | mutt -s "测试" -a /etc/hosts ufo@sina.com
这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名
还可以这样
mutt -s "测试" -a /etc/hosts -a /etc/apple ufo@sina.com < /tmp/imax.txt
这个的意思就是以 /tmp/imax.txt 文件的内容作为邮件内容。
好了,就这么简单.
自己试验后发现问题,有报错,如下:
[root@bogon report]# echo "fujian" |mutt -s "fujian_test" -a "/root/qingshell/report/8.8.8.8.xls" liuzhiqing@123.com
无法 stat liuzhiqing@123.com:没有那个文件或目录
liuzhiqing@123.com:无法附加文件
后来解决,添加一个-b参数,这样发送附件就没问题了...
如下:echo "fujian" |mutt -s "fujian_test" -a "/root/qingshell/report/8.8.8.8.xls" -b liuzhiqing@123.com