sSMTP 故障排除:授权失败

sSMTP 故障排除:授权失败

我的要求是:

  • 从终端发送电子邮件(为了批处理)
  • 将 pdf 文件附加到该电子邮件(除水印外,所有收件人的 pdf 文件均相同)
  • 指定回复地址([电子邮件受保护]

我已经尝试过“通过 gmail 发送单行消息的最简单答案是使用 ssmtp”,以及几个变体,并不断获得:

笔记本电脑 sSMTP[19226]:授权失败 (535 5.7.8 https://support.google.com/mail/?p=BadCredentialsd13sm3920147qkj.27 - gsmtp)

谷歌设置:

  • 已启用 IMAP
  • 允许安全性较低的应用程序已开启

对于ssmtp.conf我尝试的每个设置,我都完成了显示解锁验证码就在之前:

$echo "Testing...1...2...3" | ssmtp [email protected]

看着指定线程/etc/ssmtp/ssmtp.conf仅就如何设置而言,尚未达成共识:

  • mailhub=smtp.gmail.com:587VS 465
  • UseTLS=YESUseSTARTTLS=Yes(或两者?)
  • hostname=localhost与默认放置在那里的任何内容(在我的例子中,laptop

有人可以提出解决这个问题的建议,并可能完整粘贴一个工作conf文件吗?

有一项索赔2017 年的主题, 那:

您无法使用普通密码使用外部应用程序,您必须转至https://security.google.com/settings/security/apppasswords

是这样吗? (我做不到)

还有哪些替代方案?

附:

  • 操作系统:Linux Mint 19 Tara
  • ssmtp 在升级/更新之前的全新安装中进行了测试
  • 几年前,我能够使用相同的操作系统(早期版本)发送电子邮件
  • 为了确保 AuthPass 的值正确,我用它手动登录我的谷歌帐户。

答案1

使用以下 Google 设置:

IMAP enabled
Allow less secure apps is ON

解决方案是设置一个应用程序密码: 在此输入图像描述

笔记: Google 的应用程序密码设置要求首先为您尝试为其配置 ssmtp 的帐户启用双因素身份验证。

/var/ssmtp/ssmtp.conf:

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no 
# MX records are consulted. Commonly mailhosts are named mail.domain.com
# Modified 06/27/2020:
# mailhub=mail
[email protected]
[email protected]
#AuthPass=[usual gmail pwd] # aint' gonna work
AuthPass=[pwd generated by https://myaccount.google.com/apppasswords]
#UseTLS=YES
#mailhub=smtp.gmail.com:465
UseSTARTTLS=Yes
mailhub=smtp.gmail.com:587

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=laptop

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

在终端上:

$echo "Testing...1...2...3" | ssmtp [email protected]

我的gmailbox收到了: 在此输入图像描述

附:

  1. 我不认为在没有解释的情况下否决投票有什么用处。
  2. 对于问题(附件)中所述的第二个要求,mutt奇迹般有效

更新于 12/01/2022

使用msmtp并且因为不太安全的应用程序残疾人

  1. 打开两步验证
  2. 生成一个应用程序密码使用名称='msmtp'
  3. 执行$ touch ~/.msmtprc,并使用 2) 修改其内容如下,
    # content of /home/user/.msmtprc
    # do: `$ chmod 600 /home/user/.msmtprc`
    # gmail
    account [email protected]
    host smtp.gmail.com
    port 587
    tls on
    tls_starttls on
    auth on
    user google-name
    from [email protected]
    # https://myaccount.google.com/apppasswords
    password xxxxxxxxxxxxxxxx
    # default account
    account default : [email protected]
  1. $ chmod 600 /home/user/.msmtp
  2. $ echo "Testing...1...2...3" | msmtp recipient.address@domain

这将发送给密件抄送,看这里的替代品。

答案2

ssmtp是一个废弃的软件。

你应该试试邮件传输协议反而。它看起来很接近,ssmtp但维护得更好,使用得也更多。

而且gmail的配置也很简单。检查这个很好的资源拱门维基

答案3

Google 不再提供“允许不太安全的应用程序打开”选项。 2022 年 5 月之后,该选项将被删除。

https://support.google.com/accounts/answer/6010255?hl=zh-CN&utm_source=google-account&utm_medium=profile-less-secure-apps-card

选项应用密码除非您启用了两步验证,否则不可用。

应用程序密码

添加应用程序 ssmtp 并生成令牌,然后将令牌粘贴到应用程序密码设置中。

应用程序命令 生成令牌

复制令牌并用作您要集成的邮件应用程序的密码

复制令牌

在此输入图像描述

下一步启用IMAP在 Gmail 上

imap_启用

注意:请务必在邮件客户端应用程序配置中选择 SSL/TLS 选项和 Not STARTTLS

答案4

但问题是,如前所述,身份验证问题ssmtp仍然可以解决。有一个解决方案这里

以下是该解决方案的读者摘要版本:

在 Google 中使用/配置 appPassword

  • 在您要链接的 Gmail 帐户上启用两因素身份验证(如果尚未启用)。
  • 在 Google 帐户中,选择“安全”。选择“登录 Google”下的“应用程序密码”。
  • 在这里为您的应用程序进行描述。我使用“Ubuntu 上的 ssmtp”。
  • 生成 16 位应用程序密码。记下它!
  • 单击完成。

现在在将发送电子邮件的计算机上执行 sudo nano/etc/ssmtp/ssmtp.conf

[email protected]
mailhub=smtp.gmail.com:587  
FromLineOverride=YES
[email protected]
AuthPass=myAppPassword  # Note this is the password generated by google 
UseSTARTTLS=YES
UseTLS=YES

需要明确的是: AuthPass应该是您新的 16 个字符的应用程序密码并且不是您的 Gmail 密码

这在 Ubuntu 服务器 16.04 和 18.04 LTS 上对我有用

相关内容