WordPress配合Debian VPS 使用sendmail发邮件

文章目录

[隐藏]

  • 0. 开启相关端口 25
  • 1. 配置dns
  • 2. 配置dns反向解析
  • 3. 设置hostname
  • 4. 安装sendmail
  • 5. 安装MAILUTLS
  • 6. 让PHP支持mail()函数
  • 7. 安装wordpress wp-mail-smtp 插件
  • 8. 其他

WordPress自带了一些邮件功能,但是一直没能正常使用,折腾了一下,顺便做个记录。起初以为厂商禁了25端口,后面发现并没有。本文使用的是Debian系统,涉及iptables,DNS,sendmail,PHP等内容。

0. 开启相关端口 25

25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件。如过不需要作为邮件服务器,建议关闭25端口,防止被恶意利用。有些服务器厂商会限制25端口,可以工单联系开通。Debian不会自动保存iptables改动,修改iptables端口的方法有很多,我使用的是修改iptables.up.rules的方法配合/etc/network/if-pre-up.d/iptables(内容如下)

#!/bin/bash  /sbin/iptables-restore < /etc/iptables.up.rules  

平时修改iptables直接修改/etc/iptables.up.rules,可以自己使用代码生效,也可以重启自动生效。
/etc/iptables.up.rules里添加

-I INPUT -p tcp -m tcp --dport 25 -j ACCEPT  

保存生效

> iptables-restore < /etc/iptables.up.rules  

查看当前iptables规则

> iptables-save  
1. 配置dns

需要到域名DNS管理那里设置DNS解析,如果是第三方服务如百度,cloudflare就到相应的设置。
添加2条解析

type    name    value  A   mail    xx.xx.xx.xx  AAAA    mail    xxx:xxx:xxx:xxx  

A是IPv4,AAAA是IPv6,分别指向服务器的相应ip地址。为什么要两个,因为国内的邮箱如QQ,IPv4就可以了,但是Gmail这样的需要IPv6。

2. 配置dns反向解析

DNS是用来把IP映射成域名,让用户可以用google.com来访问而不是IP,那么Reverse DNS(反向域名解析)就是反过来,将域名映射成IP。因为多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送垃圾邮件,以逃避追踪,使用了域名反向解析后,就可以大大降低垃圾邮件的数量。不设置的话会被拦截、拒绝,出现如下提示

----- Transcript of session follows -----  ... while talking to gmail-smtp-in.l.google.com.:  >>> DATA  <<< 550-5.7.1 [xxx:xxx:xxx:xxx:xxx:xxx:xxx:xxx] Our system has detected that  <<< 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR  <<< 550-5.7.1 records and authentication. Please review  <<< 550-5.7.1  https://support.google.com/mail/?p=IPv6AuthError for more information  <<< 550 5.7.1 . m6si6838178pfj.586 - gsmtp  554 5.0.0 Service unavailable  

设置Reverse DNS需要到VPS提供商那里设置,如: vultr后台 – server – 某一台服务器 – setting – Reverse DNS
添加IPv4/IPv6 2条Reverse DNS记录

IP Address  Reverse DNS  xx.xx.xx.xx mail.xxx.com  xxx:xxx:xxx:xxx mail.xxx.com  
3. 设置hostname

设置服务器的hostname和DNS需要解析的域名一致如mail.xxx.com

> vi /etc/hostname  #立即生效  > hostname -F /etc/hostname  
4. 安装sendmail

sendmail是一种邮件传送代理(MTA,Mail Transport Agent)服务器,也可以用其他的代替。

> apt-get install sendmail    安装过程中有重要提示:  To enable sendmail to use STARTTLS, you need to:  1) Add this line to /etc/mail/sendmail.mc and optionally  to /etc/mail/submit.mc:  include(`/etc/mail/tls/starttls.m4')dnl  2) Run sendmailconfig  3) Restart sendmail  根据提示,需要  1) /etc/mail/sendmail.mc和/etc/mail/submit.mc,添加下面include的那一行  include(`/etc/mail/tls/starttls.m4')dnl  并且/etc/mail/sendmail.mc在DAEMON_OPTIONS改成  DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl  2)执行 > sendmailconfig  3)执行 > service sendmail restart  查询是否正常运行服务  > service sendmail status  
5. 安装MAILUTLS

mail 是用户使用客户端(类似foxmail)负责向MTA 撰写 发送邮件,要使用mail来发送邮件,需要安装mailutils。

> apt-get install mailutils  

简单的命令来测试发送邮件

> echo "Hello, Water" | mail -s "Water's Greeting" hinwen123@gmail.com  

意思是将内容为Hello,Water,主题为Water’s Greeting的email发送到指定的邮箱。
tips:这里测试了几次,刚开始QQ邮箱成功,但是到了垃圾箱,Gmail失败(原因是DNS反向解析没有配置),配置DNS反向解析后,QQ邮箱顺利收件,Gmail收件至垃圾箱,估计是因为内容太简陋被扔到了 垃圾箱。

6. 让PHP支持mail()函数

需要修改php.ini里面的sendmail_path,如何找到php.ini,可以使用 phpinfo.php查看,或者探针,这类应用一般在一键脚本都会携带,如没有可以上传到web目录即可。

Configuration File (php.ini) Path   /usr/local/php/etc  Loaded Configuration File   /usr/local/php/etc/php.ini  

php.ini里面的sendmail_path修改为:

sendmail_path = /usr/sbin/sendmail -t -i  

重启生效

> service php-fpm restart  

如不确定是否修改成功,可继续到phpinfo.php中查看

sendmail_path   /usr/sbin/sendmail -t -i  
7. 安装wordpress wp-mail-smtp 插件

这个插件可以配置第三方邮件比如使用QQ邮箱账号密码代发,这里使用原生mail()发送,毕竟搭建了邮件服务器

1.设置邮件地址如:water@mail.xxx.com
2.设置用户名如:water
3.勾选使用php mail()函数
4.点击测试发邮件。

注意只能测试发送的过程,如果没开25端口,会提示端口连接失败,如果是mail()函数不支持也会提示。如果邮件被拒绝(或其他原因没收到,垃圾箱也没有),是不会提示的,需要到服务器 /var/mail/www 来查看日志 ,www是用户名。

8. 其他
  • 其他并不需要做什么设置,插件已经自动配置好了用户名和邮箱,目前是有评论待审和管理员登录时(由于安装了安全管理插件Wordfence)就有邮件通知啦。其他邮件功能还有待研究。
  • 这里只是配置了发邮件的服务和功能,收件的还没有弄,小域名邮箱,应该没什么用处吧,其他的联系就由Gmail来解决。
  • 邮件服务域名建议不要使用cdn之类的使用DNS服务商的IP来隐藏IP,否则会导致DNS和DNS反向解析的IP对应不上。

原文出处:hinwen -> https://www.hinwen.com/28007.html

相关推荐

发表回复

房先生
我们将24小时内回复。
2024-05-10 13:21:45
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
[QQ客服]
2781198
加我微信
[电话联系]
13585372227
[电子邮件]
chaoneo@163.com
取消

选择聊天工具: