需求很简单,也不搞得那么麻烦。不需要接收邮件,仅仅利用PHP类库PHPMailer发送验证码邮件,接收邮件可以用什么qq,网易的。还有一点如果配置接收邮件,还需要考虑什么安全,垃圾邮件啥的。
正文开始
1 解析域名 (防止邮件被扔进垃圾邮箱)
mail.daliycode.com A记录到 123.123.123.123(你的服务器ip) @ MX记录到 mail.daliycode.com 优先级10 @ TXT记录到 v=spf1 mx -all
2 安装postfix
apt-get install postfix
安装完毕应该就直接可以发送邮件了,测试发送邮件:
echo "测试邮件正文" | mail -s "邮件标题" XXXX@qq.com(你的接收邮箱地址)
一般在垃圾邮箱里面,域名解析成功后才不会到垃圾邮箱。
3 安装cyrus-sasl
apt-get insatll sasl2-bin
4 配置postfix
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination reject_unauth_destination myhostname = mail.daliycode.com mydomain=daliycode.com myorigin = $mydomain mydestination = $myhostname.localhost.$mydomain,localhost,$mydomain mynetworks = 127.0.0.0/8 home_mailbox = Maildir/ mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only #仅发送 inet_protocols = ipv4 #配置smtp认证 PHPMailer就是通过这个认证账户去发送邮件的 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtpd_client_restrictions = permit_sasl_authenticated broken_sasl_auth_clients = yes smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous #禁止匿名 smtpd_sasl_authenticated_header = yes message_size_limit = 15728640
5 创建smtpd.conf 文件
vim /etc/postfix/sasl/smtpd.conf #32位机器 vim /usr/lib/sasl2/smtpd.conf #写入内容 pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
6 使用saslpasswd2创建认证用户及密码(安装了cyrus-sasl就已安装saslpasswd2)
#创建admin@daliycode的邮箱账号(也是smtp的账号)和密码 saslpasswd2 -c -u daliycode.com(你的域名) admin(用户) #回车要求输入密码,2次
#这里很关键,在ubuntu下postfix所能浏览的目录有限制,必须把数据库文件复制到postfix的运行目录下,不然在用户验证的时候会出错。
cp -a /etc/sasldb2 /var/spool/postfix/etc/
7 将postfix添加到sasl组
gpasswd -a postfix sasl #修改sasldb权限 chmod 640 /var/spool/postfix/etc/sasldb2 #列举sasldb2中的用户 sasldblistusers2 -f /var/spool/postfix/etc/sasldb2
7 测试smtp
telnet localhost 25 auth login 334 VXN1cm5hbWU6 #会显示出这个 #输入base64加密后的账号字符串 dGVzdEBqdW1wc2VydmVyLmNvbQ== #输入base64加密后的密码字符串 0dGVzdDEyMw== 235 2.7.0 Authentication seccessful #表示认证成功,即配置成功。
8 你的web系统后台配置smtp信息,并测试邮件发送
转自:https://www.pianshen.com/article/865073641/