需求很简单,也不搞得那么麻烦。不需要接收邮件,仅仅利用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/