使用 Raspbian 和 Ubunntu 16.04 LTS 所以需要一个通用的 Linux 解决方案。
要求很简单:
我需要一种从命令行发送单行电子邮件的方法。
我已经为这个特定的 Rpi3 设置了一个 gmail 帐户,地址为 rpi3abc@gmail.com - 没有 2FA
所以现在我需要能够在没有用户干预的情况下从任何地方(包括 cron)发送单行邮件消息。
我也希望它能够发送文本文件;基本上,任何来自stdin.
我尝试使用 Google 设置postfix作为其中继主机,但惨败。
Google 改用OAuth2身份验证并弃用其他身份验证方法。这就是为什么我尝试使用新的 OAuth2 身份验证而不是旧的用户/密码身份验证。
据我了解,postfix 本身不进行任何 SASL 身份验证,而是依赖于其他应用程序,例如Cyrus SASL。Cyrus 有一个插件可以进行 OAuth2 身份验证:
https://github.com/moriyoshi/cyrus-sasl-xoauth2
但从这里开始我迷失了。我不明白如何正确配置 postfix/cyrus 以使用 OAuth2 身份验证。
我设法设置 getmail 使用 OAuth2 身份验证从 Google 获取邮件。我希望用 postfix 和 Cyrus 做同样的事情不会更困难。但我想我错了。
很难提出具体问题。我多次更改配置文件,以至于我可能完全搞砸了。
但我想知道是否有更多关于如何配置 postfix 以使用具有 OAuth2 身份验证的中继主机的文档?
我正在尝试使用debianmsmtp 1.8.3和/etc/aliases在 debian 上将我所有的系统电子邮件转发到我的 gmail 地址。它有效,但我从 gmail 收到错误。
当我发送电子邮件root(通过echo "hello world" | mail -s "forward me" root)时,我在 gmail 地址的收件箱中收到了 2 封电子邮件:
mailer-daemon@googlemail.comAddress not found
Your message wasn't delivered to root@backupbox because the domain backupbox couldn't be found. Check for typos or unnecessary spaces and try again.
The response was:
DNS Error: 5452395 DNS type 'mx' lookup of backupbox responded with code NXDOMAIN Domain name not found: backupbox
Run Code Online (Sandbox Code Playgroud)
显然,gmail 无法访问也就不足为奇了 …
建立在上一篇文章的基础上,其中要求让 cron 作业通过单个命令行发送状态消息,如下所示:
关于如何使用单行发送附件文件的问题出现了。
设想:
cron 作业生成输出文件,如下所示:
cd /home/pi/python
gnuplot plt12
Run Code Online (Sandbox Code Playgroud)
程序文件 plt12 包括以下两行:
set output "pl12.png"
set terminal png font "arial,11"
Run Code Online (Sandbox Code Playgroud)
这是在 Rpi3B 系统上完成的,该系统通过 USB 连接到用于进行数据记录的 ADC 的 Nano。
那么,问题是,使用单个命令行通过 gmail 发送该绘图文件图像的最简单方法是什么?
我有以下 ssmtp.conf 文件:
root=test@gmail.com
mailhub=smtp.gmail.com:587
hostname=ed424cef9b52
UseTLS=Yes
UseStartTTLS=Yes
AuthMethod=LOGIN
AuthUser=test
AuthPass=test
FromLineOverride=yes
TLS_CA_File=/etc/ssl/certs/ca-certificates.crt
Run Code Online (Sandbox Code Playgroud)
我可以连接到 587 gmail 端口:
telnet smtp.gmail.com 587
Trying 64.233.186.109...
Connected to gmail-smtp-msa.l.google.com.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试发送邮件时:
/usr/sbin/ssmtp -v test@gmail.com < qq
ssmtp: Cannot open smtp.gmail.com:587
echo test | mailx -s "testing ssmtp setup" test@gmail.com
send-mail: Cannot open smtp.gmail.com:587
Can't send mail: sendmail process failed with error code 1
Run Code Online (Sandbox Code Playgroud)