Linux中使用Msmtp+mutt+shell自动发邮件程序安装说明

------by liyoujia

 

环境:

需要用到mutt 和 msmtp 这两款软件

Muttlinux初始化安装的时候自带,检查方式:#find / -name "mutt" ->查看是否有/usr/bin/mutt

Mutthttp://sourceforge.jp/projects/sfnet_mutt/releases/

Msmtphttp://sourceforge.net/projects/msmtp/files/msmtp/

 

 

使用 msmtp+mutt+shell来实现
之前在Linux下使用mail命令来发送邮件,配置起来比较麻烦,需要配置sendmail的很多东西。而且还必须启动sendmail才能保证邮件发送成功。其实我们就只要能发送邮件就可以,服务器多开个东西就等于多一个入侵的门。而且sendmail漏斗是很多的。那么有没有类似于 foxmail,outlook这样的邮件客户端软件,并且有命令行的形式,来发送邮件呢。muttmsmtp提供了一个很好的解决方案。


开始:

1.程序包的安装(一般情况mutt不用安装)

tar jxvf msmtp-1.4.16.tar.bz2

./configure --prefix=/usr/local/msmtp &&make &&make install

tar -xzvf mutt-1.5.11.tar.gz

./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配置版本、安装路径检查

[root@vi bin]# ./msmtp --ver

msmtp version 1.4.16

TLS/SSL library: OpenSSL

Authentication library: GNU SASL

Supported authentication methods:

plain cram-md5 digest-md5 gssapi external login

IDN support: enabled

NLS: enabled, LOCALEDIR is /usr/local/msmtp/share/locale

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是否正常安装:

/usr/local/msmtp/bin/msmtp viyin@yahoo.cn

test,viyin

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.安装过程注意事项

1msmtp: /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 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