在使用医学研究数据收集系统REDCap应用时,需要使用邮件服务来发送用户注册、密码修改、项目信息等邮件,因此必须配置好sendmail功能。经过多次摸索以及请教各路专家,找到两个解决方案。总结如下。
方案一:以使用qq邮箱smtp服务为例:
1、安装sendmail和mailx程序
yum install sendmail mailx -y
2、获取授权码:使用qq邮箱的smtp服务,需要使用授权码而不是邮箱密码进行登录。请按照步骤,获取到授权码,https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001607&&id=28
3、鉴于网络安全考虑,各大服务器服务商大多不再开放25端口,建议使用SSL端口发送邮件,因此需要事先配置SSL证书。进入linux shell终端,完成以下步骤:
生成证书:
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/qq.crt
添加证书进入SSL库:
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /etc/pki/nssdb -i /etc/pki/nssdb/qq.crt
添加证书进入Global库:
certutil -A -n "GeoTrust Global CA" -t "C,," -d /etc/pki/nssdb -i /etc/pki/nssdb/qq.crt
4、修改/etc/mail.rc文件
vim /etc/mail.rc
添加下列参数,将sender@qq.com替换为发送邮件的qq邮箱地址,注意需要删除“#”及后面注释
set from=sender@qq.com #发送方邮件
set smtp=smtps://smtp.qq.com:465 #使用smtps协议,及465端口
set smtp-auth-user=sender@qq.com #smtp邮件账号(必须与from邮件地址一致)
set smtp-auth-password=kpvovdlbdqnobbgg #步骤2中获得的授权码,不是QQ密码
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb #SSL证书路径
set smtp-auth=login
5、重启sendmail服务
systemctl restart sendmail
6、开启httpd发送邮件支持
setsebool -P httpd_can_sendmail 1
7、测试验证发送,把receiver@***.com替换为接受邮件的地址。
echo "邮件内容" | mail -s "邮件标题" receiver@***.com
方案二:以宝塔面板中宝塔邮局为例:
1、在面板软件管理中,安装宝塔邮局服务
2、在宝塔邮局中打开配置界面,根据提示,到你的域名管理处进行对应的域名解析操作
3、在宝塔邮局中启用SSL,申请ssl证书,如果没有启用SSL,则默认是25端口,腾讯云服务器可以在安全管理里申请开启25端口,否则邮件无法发送,只能接收邮件。阿里云不再支持25端口开放。境内服务器必须先备案,才能成功申请SSL证书。
4、在解析成功的域名后添加用户
5、配置界面中测试邮件发送