Ubuntu 命令行发送邮件到远端
我在一部冗余的笔记本电脑(Compaq Presario R3000, 显示屏坏了)上装了Ubuntu+Apache+PHP,平时主要用来调试代码。此外还有一个重要的用途:我在上面运行一些Cron Job, 用来更新网站开发日志的日志分类栏目。虽然每次运行结果都会被存在LOG文件里,但是有时Cron Job运行会出错,为了在第一时间里发现问题,我希望可以通过Email把运行结果发到我常用的邮箱里。
Ubuntu命令行发送邮件的方法很多,如果Google一下,可以找到象mailx,mutt,nail等邮件客户端。但是安装以后,尝试通过它们放送邮件到Gmail或者Hotmail,却得到“Mailing to remote domains not supported”的错误信息。认真研究一下,发现问题出在我的Ubuntu缺少完善的邮件服务器(MTA)。可是我的Ubuntu挂在自家的局域网上,没有固定IP,要搭建一个功能完善的邮件服务器估计不是很容易。(P.S.我在常用的Linux命令集一文里介绍了如何在命令行发送邮件,但是这适合于与安装有邮件服务器的终端,要不然的话,就只可以在本地内发送) 但是我想或许可以通过Gmail在命令行上发送邮件,上网Google了一下,终于找到了一个和我有相同问题的人,不同的是他还提供了详细的解决方案。很简单只需照猫画虎,就可以实现从命令行发送邮件到远端了。原文是英文的,我稍作翻译如下,希望对一些人有所帮助。
1. 安装所需的软件
$ sudo apt-get install msmtp$ sudo apt-get install nail
2. 安装Gamil的Thawte证书
$ mkdir -p ~/etc/.certs$ chmod 0700 ~/etc/.certs$ cd ~/etc/.certs$ wget https://www.verisign.com/support/thawte-roots.zip --no-check-certificate$ unzip thawte-roots.zip$ cp Thawte\ Server\ Roots/ThawtePremiumServerCA_b64.txt ThawtePremiumServerCA.crt
3. 配置msmtp,我是用Vim打开的,原文使用gedit
$ gedit ~/.msmtprc或者:$ vim ~/.msmtprc
这将打开一个空白文档,你只需把下面大写部分改为你的个人设置后粘帖即可。因为我只想使用gmail account,所以我没有设置isp account,并且把account default改为gmail。 别忘了改“USER”!!!
# config options: http://msmtp.sourceforge.net/doc/msmtp.html#A-user-configuration-filedefaultslogfile /tmp/msmtp.log# isp accountaccount ispauth loginhost SMTP.YOURISP.COMport 25user YOURNAME@ISP.COMfrom YOURNAME@ISP.COMpassword *****# gmail accountaccount gmailauth onhost smtp.gmail.comport 587user YOURNAME@gmail.compassword *****from YOURNAME@gmail.comtls ontls_trust_file /home/USER/etc/.certs/ThawtePremiumServerCA.crt# set default account to use (from above)account default : isp# 注意:我把默认改为 gmail
4. 更改msmtprc文件的许可
$ chmod 600 ~/.msmtprc
5. 配置nail,我是用Vim打开的,原文使用gedit
$ gedit ~/.mailrc或者$ vim ~/.mailrc
这将打开一个空白文档,你只需把下面大写部分改为你的个人设置后粘帖即可。因为我只想使用gmail account,所以我没有设置isp account。
# set smtp for nail# ref: http://ubuntuforums.org/showpost.php...94&postcount=6# docs: http://msmtp.sourceforge.net/doc/msm...guration-files# isp account (default)# $ nail -s "subject line" -a /path/file recipient@email.com < /path/body.txtset from="YOURNAME@ISP.COM"set sendmail="/usr/bin/msmtp"set message-sendmail-extra-arguments="-a isp"# gmail account# $ nail -A gmail -s "subject line" -a /path/file recipient@email.com < /path/body.txtaccount gmail {set from="YOURNAME@gmail.com (YOURNAME)"set sendmail="/usr/bin/msmtp"set message-sendmail-extra-arguments="-a gmail"}
搞定!!!
发送测试:
$ echo -e "testing email from the command line" > /tmp/test_email$ nail -A gmail -s "gmail test" YOURNAME@gmail.com < /tmp/test_email
Log文件在:/tmp/msmtp.log
标签: Linux



0 条评论:
发表评论
指向此帖子的链接: