使用Aliyun云服务器发邮件

默认情况下Aliyun云服务器对外25号端口被禁用了,需要申请解封,但不一定成功。此时,需要考虑使用邮箱的IMAP服务发送邮件。这需要邮箱服务器支持并启用IMAP服务。以下使用Aliyun服务器给QQ邮箱发送邮件为例:

1. 开启QQ邮箱的IMAP服务。

登录QQ邮箱后,在设置——帐户界面开启IMAP服务。若是已经开启,则可以点击关闭IMAP功能后再点击启用,此时需要使用密保手机发送指定内容短信到指定号码,则获得16个字符长度的授权码,后续会用到此授权码。

可以查看IMAP相关说明,获取IMAP服务的发送邮件服务器信息:

发送邮件服务器:smtp.qq.com
SSL端口号:465或587
账户名:您的QQ邮箱账户名(chenllianfu@foxmail.com)

2. 设置SSL证书

# 准备一个目录,用于存放证书信息
mkdir ~/.certs
cd ~/.certs

# 向qq邮箱请求SSL证书
date | openssl s_client -connect smtp.qq.com:465 | perl -e 'while (<>) { $keep = 1 if m/BEGIN/; print if $keep == 1; $keep = 0 if m/END/; }' > smtp_qq.crt

# 安装证书导入工具
yum install -y nss-tools

# 将证书增到数据库中
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ./ -i ./smtp_qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ./ -i ./smtp_qq.crt
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ./smtp_qq.crt 

# 列出目录中数据库中的证书
certutil -L -d ./

3. 对邮件发送客户端进行配置

修改发送邮件的配置文件/etc/mail.rc内容:

cat << EOF >> /etc/mail.rc
set ssl-verify=ignore                        # 启用证书
set nss-config-dir=/root/.certs              # 设置证书数据库路径
set from="chenllianfu@foxmail.com"           # 邮箱全名
set smtp="smtps://smtp.qq.com:465"           # 发送邮件服务器地址
set smtp-auth-user=chenllianfu@foxmail.com   # 邮箱账户名
set smtp-auth-password=xxxxxxxxxxxxxx        # 邮箱授权码(不是邮箱登录密码)
set smpt-auth=login                          # 登录SMPT服务用于发送邮件
EOF

4. 发送邮件

测试邮件发送:

date | mail -s test chenllianfu@foxmail.com

使用IMAP方法发送邮件,其实是直接通过密钥证书加密传输数据,通过配置文件设置用户名和授权码登录邮件服务器,然后直接使用邮件服务器进行邮件操作。所以最后操作的发件人是chenllianfu@foxmail.com用户自己,同时也实现了Aliyun服务器和邮件服务器的连接,以利于将Aliyun服务器的数据通过邮件服务器发送出去。