Linux中使用Msmtp+mutt+shell自动发邮件程序安装说明
------by liyoujia
环境:
需要用到mutt 和 msmtp 这两款软件
Mutt:linux初始化安装的时候自带,检查方式:#find / -name "mutt" ->查看是否有/usr/bin/mutt
Mutt:http://sourceforge.jp/projects/sfnet_mutt/releases/
Msmtp:http://sourceforge.net/projects/msmtp/files/msmtp/)
使用 msmtp+mutt+shell来实现
之前在Linux下使用mail命令来发送邮件,配置起来比较麻烦,需要配置sendmail的很多东西。而且还必须启动sendmail才能保证邮件发送成功。其实我们就只要能发送邮件就可以,服务器多开个东西就等于多一个入侵的门。而且sendmail漏斗是很多的。那么有没有类似于 foxmail,outlook这样的邮件客户端软件,并且有命令行的形式,来发送邮件呢。mutt和msmtp提供了一个很好的解决方案。
开始:
1.程序包的安装(一般情况mutt不用安装)
1 tar jxvf msmtp-1.4.16.tar.bz2
2 ./configure --prefix=/usr/local/msmtp &&make &&make install
3 tar -xzvf mutt-1.5.11.tar.gz
4 ./configure --prefix=/usr/local/mutt &&make &&make install
2.创建安装需要的配置文件
mkdir -p /usr/local/msmtp/etc
Touch .msmtprc (前面有".",是一个隐藏文件)
Touch .muttrc
3.配置用户配置文件
vi /root/.msmtprc //注意文件名前面有个“点"
host smtp.163.com //smtp地址
tls off
auth plain
from meiti_jiankong@163.com //从哪个邮件发出来
user meiti_jiankong //用户名
password a#^*225*mgYjm21 //邮箱密码
4.配置mutt的用户配置文件
vi /root/.muttrc
set sendmail="/usr/local/msmtp/bin/msmtp" //msmtp的安装位置。根据自己的情况改
set use_from=yes
set from=meiti_jiankong@163.com //用户名
set envelope_from=yes
Set realname="yjli"
5.配置msmtprc的全局配置文件
vi /usr/local/msmtp/etc/msmtprc
defaults
account meiti_jiankong //用户名
host smtp.163.com // smtp -IP
from meiti_jiankong@163.com //用户名
auth login ------>使用smtp认证
port 25
tls off ----->如果需要加密,就得将tls 设置为on
user meiti_jiankong@163.com //用户名
password a#^*225*mgYjm21//密码
account default : meiti_jiankong
logfile /usr/local/msmtp/log/msmtp.log //用户名
查看服务器是否支持加密认证:
/usr/local/msmtp/bin/msmtp --host=smtp.163.com --serverinfo
6.msmtp配置版本、安装路径检查
1 [root@vi bin]# ./msmtp --ver
2 msmtp version 1.4.16
3 TLS/SSL library: OpenSSL
4 Authentication library: GNU SASL
5 Supported authentication methods:
6 plain cram-md5 digest-md5 gssapi external login
7 IDN support: enabled
8 NLS: enabled, LOCALEDIR is /usr/local/msmtp/share/locale
9 System configuration file name: /usr/local/msmtp/etc/msmtprc
10 User configuration file name: /root/.msmtprc
11 Copyright (C) 2008 Martin Lambers and others.
12 This is free software. You may redistribute copies of it under the terms of
13 the GNU General Public License .
14 There is NO WARRANTY, to the extent permitted by law.
7.测试msmtp是否正常安装:
1 /usr/local/msmtp/bin/msmtp viyin@yahoo.cn
2 test,viyin
3 crtl +d 退出
8.mutt全局配置文件的添加
以上3个文件就这样保存,请确保用户名、密码、stmp的正确性。再来:
mkdir -p /usr/local/msmtp/log
echo 'set sendmail="/usr/local/msmtp/bin/msmtp"' >>/etc/Muttrc
echo "set use_from=yes" >>/etc/Muttrc
echo 'set realname="meiti_jiankong@163.com"' >>/etc/Muttrc //这里改成自己的邮箱
echo 'set editor="vim"' >>/etc/Muttrc
9.邮件发送测试
/usr/local/mutt/bin/mutt -s "邮件标题" 281450202@qq.com -c 1516070****@139.com </root/jiankong_log/data.log -a /tmp/附件.txt
列如:echo "web backup" | mutt -s "messages" -a /root/testmail.txt 463873891@qq.com
-s 邮件标题 紧接的是接收邮件地址 -c 抄送地址 "</root/jiankong_log/data.log "为邮件正文 -a是附件。
如果发送不成功,请检测下配置文件。
10.安装过程注意事项
1)msmtp: /root/.msmtprc: must have no more than user read/write permissions
解决办法:更改权限 chmod 600 .msmtprc
由于秘密是明码,则.muttrc和 .msmtprc两个隐藏文件一定只能是600权限
2)搭建的机器必须配置DNS和网关;
3)必须打开网关的端口25;
4)当出现如下错误时:
$ echo “helloworld” | mutt –s “test subject”***@163.com
Error sending message, child exited 78 ().
Segmentation fault
此时可以确定是由于msmtp出现了问题,而且是由于无法加载默认的default用户而导致的。解决方案即是在配置sendmail时将其配置文件加上。如下所示:(vim . Msmtprc)添加如下配置。
set sendmail=”/usr/local/msmtp/bin/msmtp –C.msmtprc”