Skip to content


Linux下使用mail命令发送邮件

mai_postfix_iewb

  Linux服务器有在运维时有时候会有需要进行外部邮件的发送,当然一般情况下会结合计划任务一起向管理员发送系统数据和动态,在不使用邮件系统的客户端程序(MUA)的情况下向外部发送邮件也非常简单,这时会用到mail命令。


  使用mail命令发送邮件分两种情况,一是服务器是个运作正常的邮件服务器(关于如何搭建邮件服务器请查阅相关文章),这个时候使用mail命令有三种格式,可以根据自己的喜好选择一种。

1. 使用文件进行邮件发送
mail -s “Hello world” test@iewb.net < mail.txt
其中mail.txt为事先编辑好的文件,也就是邮件正文。

2.直接使用shell当编辑器
mail -s “Hello world” test@iewb.net
hello,this is a test mail.
  第一行是输入的命令,-s表示邮件的主题,后面的test@iewb.net则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的”hello,this is a test mail.”。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

3.使用管道进行邮件发送
echo “hello,this is a test mail.” | mail -s “Hello world” test@iewb.net
  使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。

  Linux服务器发送邮件还有一种情况就是linux不是一台正常的邮件服务器,就是没有绑定一个可以发送邮件的域名,这个时候就需要通过外部SMTP发邮件 (直接抛弃sendmail和postfix)。修改/etc/mail.rc,如果没有安装可以执行yum install mailx安装,增加一下类似N行,指定外部的smtp服务器地址、帐号密码等。

set from=123456@qq.com
set smtp=smtp.qq.com #如果使用ssl方式,可写成:smtp=smtps://smtp.163.com:465                      
set smtp-auth-user=123456 
set smtp-auth-password=654321#大多非邮箱登陆密码,为smtp授权密码
set smtp-auth=login
set ssl-verify=ignore #如果不使用ssl,则不需要配置此行
set nss-config-dir=/root/.certs  #证书配置路径,普通用户需要有访问权限才能发送邮件,如果不使用ssl,则不需要配置此行

配置ssl证书(如果不启用ssl登录,可以不设置以下配置):

mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/./ -i ~/.certs/163.crt
certutil -L -d /root/.certs

  配置ssl证书配置是我直接从网上看的教程,出处也不知道是哪了,是之前copy到我的Google Docs中的。
  编辑完mail.rc后就可以使用mail命令发送邮件了,格式与上面相同,比如
echo “hello,this is a test mail.” | mail -s ” Hello world” test@iewb.net

Posted in 技术文章.

Tagged with , , .


4 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. 好千度 says

    第一次来,欢迎回访

  2. 萌萌哒兼职 says

    我也来看看

  3. 赚钱吧 says

    感谢分享,学习了!



Some HTML is OK

or, reply to this post via trackback.