• ubuntu下使用mutt+msmtp发送邮件


             因为毕业设计的关系,每天需要多次备份文件,所做操作比较机械化,所以就想在shell下自动帮我备份文件,开始想使用mail命令但是mail命令发邮件需要开启sendmail服务,我只是一台客户端,开个sendmail没有必要,于是乎,在网上找了好久,才发现mutt是个好东西。

           在ubuntu下安装mutt很方便,只需要sudo apt-get install mutt,另外需要安装msmtp,一个发邮件的小工具,sudo apt-get insall msmtp。这两个文件都很小,一下子就装完了。

          接下来是配置文件,也很简单,这里我引用网上别人的配置和命令行。另外在文件的最后,附上一个脚本文件,是通过发送电子邮件自动备份。

    =====================================引用================================

    MUTT
    系统全局设置/etc/Muttrc,如果使用某个系统用户,可以在~/.muttrc中设置。

    vi .muttrc
    set sendmail="/usr/bin/msmtp"
    set use_from=yes
    set realname="FengYuBin"
    set
    from=fyb@163.com
    set envelope_from=yes

    MSMTP
    创建~/.msmtprc和~/.msmtp.log,分别为配置和日志文件。
    vi .msmtprc

    account default
    host smtp.163.com
    from fyb@163.com
    auth plain
    user fyb
    password 123456
    logfile ~/.msmtp.log
    由于password是明码,所以我们需要修改此文件的权限。
    chmod 600 .msmtprc
    touch ~/.msmtp.log
    查看SMTP服务器是否支持认证的TLS加密:
    [oracle@oracle ~]$ msmtp --host=smtp.163.com --serverinfo
    SMTP server at smtp.163.com (m5-86.163.com [202.108.5.86]), port 25:
        163.com Anti-spam GT for Coremail System (163com[20050206])
    Capabilities:
        PIPELINING:
            Support for command grouping for faster transmission
        AUTH:
            Supported authentication methods:
            PLAIN LOGIN
    到这里,你可以使用mutt来发送邮件了,我们测试一下。
    echo "test" |mutt -s "my_first_test"
    fyb@gmail.com
    -s "subject"
    -c "carbon-copy"
    echo "test" |mutt -a dbms_stats.txt -s my_first_test fyb@gmail.com

    echo -e "文字描述,可以带参数$allname" | mutt -a "附件(写好路径)" -a "附件2(写好路径)"   aa@163.com,bb@yahoo.com.cn(收信人) -c cc@163.com,dd@163.com(抄送)
    观察.msmtp.log文件,如果有错会在日志文件中被报告出来,当然,成功发送的日志也会出现在此日志文件内。
    到这里发送邮件的过程已经全部完成,接下来要做的事就简单了,我们假设每天凌晨定时发送信件给公司某用户,可以编写脚本处理。
    mail.sh

    #!/bin/sh
    content="you can tell your colleague what something to do at tomorrow"
    echo "$content" |mutt -s "hi Jacky" Jacky's_email

    OK,上面这些就是我实现自动发送邮件的全部过程,怎么样,很轻松吧!

    =================================下面是我脚本文件=======================

    #!/bin/bash
    cd
    fileName=bak\($(date +%Y%m%d%H%M)\).zip #产生文件名
    zip $fileName -r fw2 #将需要备份的目录fw2打包
    sleep 1 #睡眠一秒,让zip打包完成的文件写入硬盘
    echo "Sending mail..."
    #调用mutt发送文件
    echo "firewall code src backup" | mutt -s "$fileName"
    springtty@163.com -a "$fileName"
    echo "Sent OK"

    =============================================================================================

    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-file 
     defaults
     logfile /tmp/msmtp.log
     # isp account
     account isp
     auth login
     host SMTP.YOURISP.COM
     port 25
     user YOURNAME@ISP.COM
     from YOURNAME@ISP.COM
     password *****
     # gmail account
     account gmail
     auth on
     host smtp.gmail.com
     port 587
     user YOURNAME@gmail.com
     password *****
     from YOURNAME@gmail.com
     tls on
     tls_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.txt
     set 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.txt
     account 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


     

  • 相关阅读:
    NHibernate中多表(对象)间的查询
    将datagrid数据导到excel的一个问题
    win2003<IIS6>部署.net 4.0<asp.net 4>
    C# 单元测试
    office2010 word发布博客 博客园
    语义化的HTML首先要强调HTML结构
    SQL Server 2005 安装(各种错误)
    SWFUpload V2.2.0 说明文档
    SQL Server 复制, 集群
    高亮插件测试
  • 原文地址:https://www.cnblogs.com/276815076/p/2207214.html
Copyright © 2020-2023  润新知