- A+
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,可以自己使用代码生效,也可以重启自动生效。
- -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT
保存生效
- > iptables-restore < /etc/iptables.up.rules
查看当前iptables规则
- > iptables-save
1.配置dns
type | name | value |
---|---|---|
A | xx.xx.xx.xx | |
AAAA | xxx:xxx:xxx:xxx |
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
Vultr官网: Vultr官网链接
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
4.安装MAILUTLS
- > apt-get install mailutils
简单的命令来测试发送邮件
- > echo "Hello, Water" | mail -s "Water's Greeting" hinwen1123@gmail.com
5. 让PHP支持mail()函数
Configuration File (php.ini) Path | /usr/local/php/etc |
Loaded Configuration File | /usr/local/php/etc/php.ini |
- sendmail_path = /usr/sbin/sendmail -t -i
重启生效
- > service php-fpm restart
sendmail_path | /usr/sbin/sendmail -t -i |
6.安装wordpress wp-mail-smtp 插件
7.其他
-
其他并不需要做什么设置,插件已经自动配置好了用户名和邮箱,目前是有评论待审和管理员登录时(由于安装了安全管理插件Wordfence)就有邮件通知啦。其他邮件功能还有待研究。
- 这里只是配置了发邮件的服务和功能,收件的还没有弄,小域名邮箱,应该没什么用处吧,其他的联系就由Gmail来解决。
- 邮件服务域名建议不要使用cdn之类的使用DNS服务商的IP来隐藏IP,否则会导致DNS和DNS反向解析的IP对应不上。