使用sendemail和sawks通过主流邮箱SMTP发送邮件时AUTH LOGIN认证失败求助
使用sendemail和sawks通过主流邮箱SMTP发送邮件时AUTH LOGIN认证失败求助
哥们,我之前折腾sendemail对接主流邮箱SMTP的时候也踩过一模一样的坑!给你梳理几个大概率能解决的关键点:
1. 主流邮箱的密码认证不是普通密码!
现在Gmail、Yahoo、mail.com这些大厂都收紧了安全策略,普通登录密码根本没法用于SMTP认证,必须用「应用专用密码」:
- 先给你的邮箱账户开启两步验证(双因素认证),这是生成应用密码的前提;
- 去邮箱的安全设置里,找到「应用专用密码」的选项,生成一个专门用于SMTP服务的密码,把这个密码填到sendemail/sawks的
-xp(或对应配置项)里,而不是你平时登录网页邮箱的密码。
2. 端口和加密方式必须严格对应
别乱试组合,这俩是绑定的:
- 587端口:必须用STARTTLS加密,sendemail里要加参数
-o tls=yes,不能直接用SSL; - 465端口:是SSL/TLS直连加密,sendemail里要加
-o ssl=yes,不需要STARTTLS步骤。
举个Gmail的正确命令示例:
sendemail -f your@gmail.com -t target@example.com -u "测试邮件" -m "这是测试内容" -s smtp.gmail.com:587 -o tls=yes -xu your@gmail.com -xp 你的应用专用密码
3. 检查账户的SMTP权限和风控状态
- 去邮箱的设置里,确认「允许第三方SMTP客户端访问」的开关是打开的(有些邮箱默认是关闭的);
- 登录邮箱的安全中心,看看有没有异常登录记录——如果之前用telnet或者陌生IP尝试过,可能被系统临时限制了,手动解锁一下就行。
4. sawks的配置注意点
如果用sawks的话,要确保配置文件里的认证方式明确指定为LOGIN,同时加密选项和端口匹配:
比如配置片段大概是这样:
set smtp=smtp.gmail.com:587 set smtp-use-starttls set smtp-auth=login set smtp-auth-user=your@gmail.com set smtp-auth-password=你的应用专用密码
之前你用telnet能成功,大概率是当时邮箱还没强制应用密码,或者你用的是老的宽松策略,现在这些大厂都把普通密码的SMTP通道封死了,先试试应用密码,应该能解决90%的问题!
备注:内容来源于stack exchange,提问作者Surepic 342
相关产品推荐
相关产品推荐

