如何在ubuntu上使用sendemail发送邮件

在如何在Ubuntu 16.04上安装配置邮件发送服务器一文中,我尝试了配置ubuntu作为电子邮件发送服务器。在使用中,发现这种发送方式很不稳定,我推测应该是发送服务器域名解析的问题。

可能的原因是,邮件发送至目标邮件服务器后,目标服务器判断发件人邮件地址与实际源邮件服务器ip地址不匹配,所以作为垃圾邮件丢弃了。今天我在ubuntu上试用sendemail在终端发送邮件,非常方便好用。

2017-12-26 update: 查看系统日志,配置ubuntu作为邮件发送服务器向126邮箱发送邮件的时候,发现以下错误信息:

host 126mx03.mxmail.netease.com[220.181.15.196] said:
  554 DT:SPM 126 mx16,xMmowABnAeR_ujtawL6qEg--.27616S2 1513863808,please see
  http://mail.163.com/help/help_spam_16.htm?
ip=222.175.171.52&hostid=mx16&time
=1513863808

经检查126邮箱退信的常见问题,出现554错误代码原因有以下几种情况:
- 554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;
- 554 DT:SUM 信封发件人和信头发件人不匹配;
- 554 IP is rejected, smtp auth error limit exceed 该IP验证失败次数过多,被临时禁止连接。请检查验证信息设置;
- 554 HL:IHU 发信IP因发送垃圾邮件或存在异常的连接行为,被暂时挂起。请检测发信IP在历史上的发信情况和发信程序是否存在异常;
- 554 HL:IPB 该IP不在网易允许的发送地址列表里;
- 554 MI:STC 发件人当天内累计邮件数量超过限制,当天不再接受该发件人的投信。请降低发信频率;
- 554 MI:SPB 此用户不在网易允许的发信用户列表里;
- 554 IP in blacklist 该IP不在网易允许的发送地址列表里。
证实了我的猜测。

前提

你应该有一个邮箱地址,这个邮箱可以使用smtp端口发信。因为在终端发邮件时的命令行中,要显式输入登陆smtp服务器的用户名和密码,安全性存在一定问题,所以建议你申请一个免费邮件系统。我使用的yahoo的邮件。

安装

apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

使用

使用方法:

sendemail -f ADDRESS [options]

参数详解:

       -f ADDRESS          # 发件人地址,注意此地址应该是你真实地址
       -t ADDRESS          # 收件人地址
       -u SUBJECT          # 主题
       -m MESSAGE          # 邮件正文
       -s SERVER[:PORT]    # SMTP服务器地址及端口
       -a FILE [FILE ...]  # 附件
       -cc ADDRESS [ADDR ...]  # 抄送地址
       -bcc ADDRESS [ADDR ...] # 暗抄送地址
       -xu USERNAME            # SMTP服务器用户名
       -xp PASSWORD            # SMTP服务器密码
       -o                      # 其它选项 

示例

如我使用yahoo邮箱作为邮件发送服务器,要把sendemail命令的使用方法作为附件发到我的信箱中:

man sendemail > sendemail.usage.txt
sendemail -f [email protected] -t [email protected] -u "sendemail使用说明" -m "sendemail使用说明详解。" -s smtp.mail.yahoo.com -o tls=yes -xu [email protected] -xp 密码 -a sendemail.usage.txt

注意:-o tls=yes选项意为服务器需要SSL验证。

你可能感兴趣的:(如何在ubuntu上使用sendemail发送邮件)