【问题标题】:How to fix error with sending email using gmail?如何解决使用 gmail 发送电子邮件的错误?
【发布时间】:2019-03-29 00:20:23
【问题描述】:

我想在 Digital Ocean 下 ubuntu 18 的 php/laravel 应用程序中发送电子邮件,我发现了这个 https://semantiko.com/how-to-fix-php-mail-function-on-ubuntu-server/ 文章 我填写了相关的配置文件并发送了几封电子邮件,我在控制台中找到了:

grep -riI ssmtp /var/log
...
/var/log/mail.log:Oct 24 14:05:22 nsn-do-lamp sSMTP[16500]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/mail.log:Oct 24 14:05:22 nsn-do-lamp sSMTP[16500]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 b5-v6sm5187045wrr.94 - gsmtp)
/var/log/mail.log:Oct 24 14:05:23 nsn-do-lamp sSMTP[16502]: Creating SSL connection to host
/var/log/mail.log:Oct 24 14:05:23 nsn-do-lamp sSMTP[16502]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/mail.log:Oct 24 14:05:23 nsn-do-lamp sSMTP[16502]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 t198-v6sm6776812wmd.9 - gsmtp)
/var/log/dpkg.log:2018-10-24 05:27:56 install ssmtp:amd64 <none> 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status half-installed ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status unpacked ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status unpacked ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 configure ssmtp:amd64 2.64-8ubuntu2 <none>
/var/log/dpkg.log:2018-10-24 05:27:56 status unpacked ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status unpacked ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status unpacked ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status half-configured ssmtp:amd64 2.64-8ubuntu2
/var/log/dpkg.log:2018-10-24 05:27:56 status installed ssmtp:amd64 2.64-8ubuntu2
/var/log/syslog.1:Oct 24 05:34:07 nsn-do-lamp sSMTP[10100]: Creating SSL connection to host
/var/log/syslog.1:Oct 24 05:34:07 nsn-do-lamp sSMTP[10100]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 24 05:34:07 nsn-do-lamp sSMTP[10100]: Authorization failed (534 5.7.9  https://support.google.com/mail/?p=WebLoginRequired 130-v6sm4756430wmn.7 - gsmtp)

在我的https://mail.google.com 帐户下,我找到了电子邮件:

Sign-in attempt was blocked
myaccount@gmail.com
Someone just used your password to try to sign in to your account from a non-Google app. Google blocked them, but you should check what happened. Review your account activity to make sure no one else has access.
CHECK ACTIVITY

点击“CHECK ACTIVITY”按钮打开下一页https://imgur.com/a/fUKlJgO 我想允许我或我的帐户被使用所以我点击“否,安全帐户”并打开下一页 https://imgur.com/a/LfIDTB4

这对我来说很奇怪,因为我不需要更改密码。我想允许邮件服务使用我的 gmail.com 帐户。

你能说什么是错的吗?
我误解了 gmail 消息吗?

修改块 #2 我尝试按照提供的链接进行操作,然后打开了下一条说明:

当您想确保安全性较低的访问 应用程序对所有人都不可用。登录您的 Google 管理控制台。标志 使用管理员帐户,而不是您当前的帐户 MyNick@gmail.com

...谁是我的管理员?快速定义:管理的人 适用于公司、学校或团体的 Google 服务或设备。有人在 您的公司、学校或团体您当前的帐户,MyNick@gmail.com, 不受管理员管理。该帐户未关联 任何公司、学校或团体。相反,它是一个免费的 Google 帐户 你可以自己管理。

但是阅读我错过的文档,因为我是免费的 Google 帐户,有没有办法让自己成为管理员? 如果是,请指出在哪里以及如何?

修改块#3: 在我的 conf 文件中使用了 587 端口: 须藤纳米 /etc/ssmtp/ssmtp.conf :

root=MYNICK@gmail.com
mailhub=smtp.gmail.com:587
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=MYNICK@gmail.com
AuthPass=MYPASSWORD
FromLineOverride=YES
UseTLS=YES

sudo nano /etc/ssmtp/revaliases :

root:MYNICK@gmail.com:smtp.gmail.com:587

修改这些文件后,我运行命令 服务 apache2 重启

和测试发送电子邮件我没有在我的电子邮件中收到电子邮件 我在下一个日志中看到很多“授权失败”错误

grep -riI ssmtp /var/log
var/log/syslog.1:Oct 30 00:34:04 nsn-do-lamp sSMTP[24892]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 00:34:04 nsn-do-lamp sSMTP[24892]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 00:34:05 nsn-do-lamp sSMTP[24892]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 y76-v6sm12958494wmd.37 - gsmtp)
/var/log/syslog.1:Oct 30 01:34:04 nsn-do-lamp sSMTP[25660]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 01:34:04 nsn-do-lamp sSMTP[25660]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 01:34:04 nsn-do-lamp sSMTP[25660]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 60-v6sm16580038wra.35 - gsmtp)
/var/log/syslog.1:Oct 30 02:34:05 nsn-do-lamp sSMTP[26444]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 02:34:05 nsn-do-lamp sSMTP[26444]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 02:34:05 nsn-do-lamp sSMTP[26444]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 t16-v6sm274794wrr.12 - gsmtp)
/var/log/syslog.1:Oct 30 03:34:06 nsn-do-lamp sSMTP[27101]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 03:34:07 nsn-do-lamp sSMTP[27101]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 03:34:07 nsn-do-lamp sSMTP[27101]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 m16-v6sm13164091wmd.35 - gsmtp)
/var/log/syslog.1:Oct 30 04:34:04 nsn-do-lamp sSMTP[27852]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 04:34:04 nsn-do-lamp sSMTP[27852]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 04:34:05 nsn-do-lamp sSMTP[27852]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 143-v6sm17450782wmv.6 - gsmtp)
/var/log/syslog.1:Oct 30 05:34:04 nsn-do-lamp sSMTP[28734]: Creating SSL connection to host
/var/log/syslog.1:Oct 30 05:34:04 nsn-do-lamp sSMTP[28734]: SSL connection using ECDHE_RSA_CHACHA20_POLY1305
/var/log/syslog.1:Oct 30 05:34:04 nsn-do-lamp sSMTP[28734]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 b5-v6sm1822874wrf.15 - gsmtp)

1)除了apache2之外我还需要重启一些服务

2) 在我看来,这些日志消息不是最后的,因为正在运行:

 # date
Tue Oct 30 12:02:40 UTC 2018

我看到了时差,就像没有最后一条消息行一样 有没有办法清除 ssmtp 日志?

3) 在 Digital Ocean 下重启 ubuntu 18 没有飞沫损坏的安全方法是什么?在某些情况下,我不确定是否需要重新启动一些 service 我比较喜欢重启系统...

修改块#4: 感谢您的反馈意见! 我试着按照你的指示去做: 1) 我激活了两因素身份验证:https://imgur.com/a/azIZCY0。但是,如果我需要对这些应用做些什么呢?

2) 我得到了密码https://imgur.com/a/ZddUZ31,格式为 XXXX XXXX XXXX XXXX

3) 密码创建后我得到下一页https://imgur.com/a/1qkQLDN:

4) 你提到了

“在你的 .env 文件中使用应用密码”

哪个必须是此密码的 var 名称?就像在

AuthPass=MYPASSWORD # password without spaces in it?

在 /etc/ssmtp/ssmtp.conf 或其他名称中?我只需要生成这个新密码吗?

谢谢!

【问题讨论】:

  • 我似乎记得有一个配置选项,您可能需要在您的 google 帐户上切换,该选项允许不太安全的身份验证机制。
  • 考虑改用 Amazon SES 或 Sendgrid 等电子邮件服务提供商。
  • 你的意思是我不会遇到 Amazon SES 或 Sendgrid 的问题吗?
  • 默认情况下,数字海洋会阻塞端口 25。尝试使用端口 587 和 tls SMTP 加密。
  • 请看 MODIFIED BLOCK #3

标签: php ubuntu gmail ssmtp


【解决方案1】:

允许安全性较低的应用访问帐户

  1. 登录您的 Google 管理控制台。
  2. 单击安全 > 基本设置。
  3. 在安全性较低的应用程序下,选择转到安全性较低的应用程序的设置。
  4. 在子窗口中,选择允许用户管理他们对不太安全的应用程序的访问单选按钮。

一旦您设置了允许用户管理他们对 不太安全的应用程序打开,选定组内的受影响用户或 组织单位将能够切换访问以降低安全性 应用程序自行开启或关闭。

参考Allow or disallow less secure apps to access accounts

【讨论】:

  • 感谢您的反馈!请查看 MODIFIED BLOCK #2。
【解决方案2】:

当我们使用 Google Apps for work 帐户中的一些“新”gmail 地址时,我们遇到了类似的问题。似乎 Google 对阻止未知应用访问应用的新地址进行了某种启发式运行。

我们的解决方案是启用 2 因素身份验证并随后生成应用密码。步骤:

【讨论】:

  • 请看 MODIFIED BLOCK #4
  • 把这个密码放在ssmtp.conf 代替旧密码,它应该可以工作。它不需要第二个身份验证因素。
【解决方案3】:

对于您的编辑块 #2,您不能使用常规 Google 帐户让自己成为管理员。要成为您自己的管理员,您必须为 G Suite 付费。 https://gsuite.google.com/

G Suite 不适用于个人。它适用于希望为其公司使用 Google 应用程序的企业。这将为他们提供 admin.google.com 中的管理面板,他们可以在其中更改各种设置以添加和编辑帐户、使用自己的企业邮件、更改应用程序的徽标等等。 (甚至适用于 Android、IOS 和 Chromebook 的设备管理。) 我是我公司的 IT 人员,我们使用 G Suite。这些价格对于测试来说太高了。所以,做自己的管理员是不可能的,因为对自己来说太贵了。

编辑为您提供价格清单: https://gsuite.google.com/pricing.html

最好的问候, 克里斯

【讨论】:

    【解决方案4】:

    更新了启用不太安全应用的说明

    1. 在 Gmail 中点击齿轮图标(右上角)
    2. 点击查看所有设置
    3. 帐户和导入选项卡
    4. 点击其他 Google 帐户设置
    5. 左侧或顶部菜单,安全性
    6. 向下滚动到不太安全的应用访问,将其打开

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 2015-05-06
      • 2018-01-26
      • 2020-07-12
      相关资源
      最近更新 更多