Linux服务器使用php发送邮件,sendmail配置

在使用医学研究数据收集系统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、配置界面中测试邮件发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值