我无法通过 Outlook 发送和接收邮件。我不断收到以下错误消息ssmtp
。
ssmtp: 550 5.3.4 554-554 5.2.0 STOREDRV.Deliver; delivery result banner
以下是 的内容/etc/ssmtp/ssmtp.conf
:
[email protected]
mailhub=smtp-mail.outlook.com:587
[email protected]
AuthPass=mypassword
UseSTARTTLS=YES
hostname=sierra-test
FromLineOverride=YES
答案1
请扩展您的问题并提供您的平台详细信息(分发、版本、ssmtp 版本、您从哪里安装等)。
关于您的配置文件:
/etc/ssmtp/ssmtp.conf
我发现的一些问题(可能适用也可能不适用,具体取决于版本):
- 主机名应该有一个 FQDN(完全限定域名),否则 Outlook(或 Gmail、Yahoo 和其他)可能会拒绝它。您可以尝试添加一个。
- 您似乎缺少“AuthMethod”。
- 有人说 UseTLS 和 UseSTARTTLS 互相排斥,也有人说两种设置都适用。您可以尝试在这些选项之间切换。
例子:
[email protected]
FromLineOverride=YES # usually goes with root
mailhub=smtp-mail.outlook.com:587
rewriteDomain=outlook.com # shouldn't be needed if you are not overwriting from, but doesn't hurt
[email protected]
AuthPass=mypassword
AuthMethod=LOGIN # could be plain or cram-md5 for ex.
UseTLS=Yes # this one might be yes or no
UseSTARTTLS=Yes
hostname=sierra-test.domain.com # full domain here, might help
您必须记住,如果您为电子邮件/帐户启用了 2FA(双因素身份验证),则需要在允许您发送电子邮件之前对其进行验证。
答案2
如果您可以提供更详细的输出,那么调试问题会更容易。使用以下命令获取详细输出:
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail -v <RECEIPIENT>
但是,正如您在问题中提到的那样outlook
,Outlook 最臭名昭著的问题是本地 Linux 机器上的用户名与服务器上的用户名不匹配。
例如:
- 在您的本地机器上
echo $USER
给出值firstname
- 虽然您的电子邮件用户名是
[email protected]
可以通过在命令标志中指定用户信息来解决此问题,请尝试以下步骤:
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail -v <RECEIPIENT> -f<firstname.lastname>
答案3
登录您的帐户并验证手机号码或其他所需的验证方法,然后再次尝试发送电子邮件。