CentOS 安装配置 msmtp 和 mutt
一个月前购买了国内的一个 VPS,一边从零开始学习 Linux,一边感受 Linux 的强大。前几天不小心把 VPS 折腾得无法重启了,求助服务商也没能把资料找回来,因为没有备份又找不回数据,只好重装了系统。出了问题才知道备份的重要性,于是开始研究备份,确切地说是自动备份。网上流传最多的文章就是使用 mutt 发送邮件附件进行备份的方法,照葫芦画瓢跟着就学会了,在 IXWebHosting 的主机上成功应用(IXWebHosting 的主机也是支持 cron 的)。
可今天回到自己的 VPS,sh 脚本写好以后,文件成功打包,mutt 命令执行了却发送不了邮件。搜索了一会才明白原来是 mutt 需要一个发信的程序,msmtp 刚好是一个不错的选择。网上关于 msmtp 的文章也很多,下面是我对几篇文章加工注释的结果,希望对像我一样的 Linux 新手有用。
一、安装配置 msmtp
1. 下载与解压
先使用 PuTTY 等 SSH 工具连接登录 VPS,执行以下命令下载并解压:
wget http://downloads.sourceforge.net/msmtp/msmtp-1.4.30.tar.bz2?big_mirror=0tar jxvf msmtp-1.4.30.tar.bz22. 编译安装
进入解压目录,配置并编译安装到 /usr/local/msmtp:
cd msmtp-1.4.30./configure --prefix=/usr/local/msmtpmakemake install3. 配置 msmtp 账号
切换到安装目录,创建配置文件夹 etc 并新建 msmtprc 配置文件:
cd /usr/local/msmtpmkdir etcvi /usr/local/msmtp/etc/msmtprc编辑内容如下:
# Set default values for all following accounts.defaultslogfile /usr/local/msmtp/msmtp.log
# The SMTP server of the provider.account test# SMTP邮件服务器地址host smtp.qq.com# 发送的邮件Emailfrom xiaobaichi@qq.comauth login# 邮件服务器登录账号user xiaobaichi@qq.com# 邮件服务器登陆密码password 123456
# Set a default accountaccount default: test按 Esc,输入 :wq 保存并退出。
由于配置文件中包含明文密码,出于安全考虑需要收紧文件访问权限:
chmod 600 /usr/local/msmtp/etc/msmtprc4. 测试发信
执行以下命令向指定邮箱发送测试邮件:
/usr/local/msmtp/bin/msmtp youremail@test.com输入任意测试正文字符,然后按 Ctrl + D 结束输入并发送,检查目标邮箱是否收到邮件。
如果遇到问题,可以查看配置的日志文件排查原因:
cat /usr/local/msmtp/msmtp.log二、安装配置 mutt
1. 确认 mutt 安装状态
一般 Linux 发行版都会预装 mutt。可以使用以下命令检查:
which mutt# 若提示找不到命令,可通过 yum 安装:yum install -y mutt2. 编辑 mutt 配置文件
编辑 /etc/Muttrc,配置 mutt 的全局发信选项,修改或添加以下几行:
set from="xiaobaichi@qq.com"set sendmail="/usr/local/msmtp/bin/msmtp"set use_from=yesset realname="发件人"set editor="vi"提示
这里的发件地址最好与 msmtp 中配置的邮箱一致,否则部分 SMTP 服务器会校验拒绝。
3. 测试 mutt 结合 msmtp 发信
使用管道将内容传递给 mutt 发送测试邮件:
echo "这是一封测试邮件正文" | mutt -s "测试主题" youremail@test.com测试成功后,就可以编写 Shell 脚本使用 mutt 打包数据库与附件,结合 crontab 实现全自动定期定时异地邮件备份了。