不使用外部邮箱可直接发邮件
sendmail
- 安装 sendmail,
apt-get install sendmail
,安装时间有点长,约 7 分钟。 - 配置 hosts,详见 Sendmail very slow - /etc/hosts configuration。
hostname
,获取本机 hostname,本样例值为 ubuntuvi /etc/hosts
,修改127.0.0.1 localhost
一行为127.0.0.1 ubuntu.localdomain ubuntu localhost
。注意,ubuntu.localdomain
为必须值,而且不可另起一行。
mail 发送失败问题排查
注册用户后,邮件发送失败
提示 regmailfail “发送密码邮件时产生错误。请联系管理员!”,如果语言为英文的话,log 为“Looks like there was an error on sending the password mail. Please contact the admin!”。
查看发送失败的原因
查看 /var/log/lighttpd/error.log
,确认原因为服务器没有安装 sendmail。
1 | 2017-09-29 11:13:55: (mod_fastcgi.c.2673) FastCGI-stderr: PHP Question2Answer email send error: Could not instantiate mail function. |
apt-get install sendmail
,安装时间有点长,约 7 分钟。
注册后,在注册页面卡很久
查看 /var/log/mail.log
,确认发一封邮件约需要 20 分钟。原因为解析不到 hostname,sleep 一段时间后 retry。
1 | Sep 29 16:40:27 ubuntu sm-msp-queue[21553]: My unqualified host name (ubuntu) unknown; sleeping for retry |
配置好 hosts 之后,注册还需要等 20 多秒
安装后,发送一封邮件约 20s。从 log 上看,是公司邮件服务器响应太慢。dokuwiki 的邮件发送是同步发送。
1 | Sep 29 17:38:12 ubuntu sendmail[1864]: v8T9cCZX001864: to=sunnogo2 <sun@xxx.com.cn>, ctladdr=www-dat |
附:SMTP发包方式
附:sendmail 安装 log
1 | root@ubuntu:/var/www/dokuwiki# apt-get install sendmail |
CAUTION!
若开户 163 邮箱的“授权码”功能,本文无效。
问题概述
- 插件 smtp
- 问题:配置 163 邮箱后,无法发出邮件
- 原因:发送邮件的 sender 邮箱与配置授权的 163 邮箱不一致
- 解决:
配置设置
->通知设置
,mailfrom 自动发送邮件时使用的邮件地址
填成与授权的 163 邮箱保持一致。
smtp 插件配置
配置:管理
->配置设置
,点击目录,选择 smtp
。
配置项:
- plugin»smtp»smtp_host,您的 SMTP 发送服务器。比如
smtp.163.com
。 - plugin»smtp»smtp_port,您的 SMTP 服务器监听端口。通常是 25,对于 SSL常是 465。比如,
25
- plugin»smtp»smtp_ssl,您的 SMTP 服务器所用的加密类型?有 ssl/tls/无,比如
无
- plugin»smtp»auth_user,如果需要认证,在这里输入您的用户名。比如 `xxx@163.com`
- plugin»smtp»auth_pass,对应 auth_user 用户名的密码。注意,每次进行
配置设置
,都要重新输入密码。 - plugin»smtp»debug,在发送失败时显示完整的错误信息?在一切正常时请关闭!调试时勾选。
smtp 调试与553问题解决
使用 plugin:smtp 自带的测试工具,在 管理
-> 附加插件
,点击 @检查 SMTP 配置
,进入 SMTP 测试界面。写目标邮箱地址到 to
框中,点 sendmail
按钮。
出现错误 Log:
1 | There was an unexpected problem communicating with SMTP: Unexpected return code - Expected: 250, Got: 553 | 553 Mail from must equal authorized user |
提醒 553 错误,发送者的邮箱地址必须是登陆的邮箱地址。
- 客户端错误代码, smtp sever reply:553 mail from must equal authorized user
- 形成原因, 网易服务器smtp机器要求身份验证帐号和发信帐号必须一致,如果用户在发送邮件时,身份验证帐号和发件人帐号是不同的,因此拒绝发送。
- 解决办法/流程, 退信表明发信服务器要求身份验证. 建议:
- 确认一定要勾选“我的服务器要求身份验证”
- 请核实客户端中设置的电子邮箱地址是否填写正确,确认是输入完整的正确的邮箱地址。
- 设置的回复地址是否和邮箱地址是一致的,并且是完整的邮箱地址。
回到 管理
-> 配置管理
界面,发现 通知设置
中的 mailfrom 自动发送邮件时使用的邮件地址
,填为 `noreply@163.com`,与授权的邮箱不一致。将此配置改为授权的 xxx@163.com 即可。修改后,重新测试,可正常发送邮件。
log:
1 | Message was sent. SMTP seems to work. |
发送的邮件:
1 | 发件人: xxx@163.com [mailto:xxx@163.com] |