有人会认为这是一件非常简单的事情,但显然不是——或者我真的很讨厌它。
上下文:我有一个小型家庭服务器托管任务管理器 (TaskWarrior)、我的网站、我的 IRC 保镖等。我尽量保持此服务器的安全。另外,我想好好保养它。
我认为从该服务器接收一些定期/事件触发的电子邮件以检测可能的安全漏洞、失败的服务和其他问题会很好。实际的实现是无关紧要的,我要么只是向自己发送定期维护脚本的输出,要么可能是从日志文件中 grep 一些关键字。
问题是我只能简单地向我的地址发送电子邮件。我尝试了什么:
- 我需要一个 SMTP 服务器来发送电子邮件,所以我想我应该只使用我的电子邮件服务提供商 (mailbox.org)。结果是这样的:
$ openssl s_client -connect smtp.mailbox.org:465
[...]
---
220 smtp2.mailbox.org ESMTP Postfix
HELO myhostname
250 smtp2.mailbox.org
MAIL FROM: me@myhostname
250 2.1.0 Ok
RCPT TO: [email protected]
554 5.7.1 <my-ip:30920>: Client host rejected: Access denied
我不确定这是否与必须在服务器上进行身份验证有关。我也尝试过smtp.gmail.com
,但我在那里得到了530-5.5.1 Authentication Required
回复MAIL FROM
。但是,无论如何,我宁愿避开谷歌。
假设失败是由于必须进行身份验证,我面临另一个问题:当然,我可以告诉我的 MTA(比方说
dma
或msmtp
)我的 mailbox.org 帐户的密码,这听起来不是个好主意。我在设置安全性方面经验不足,无法确定我的服务器不会轻易被黑客入侵。我知道,一旦获得 root 访问权限,我就完蛋了,但我仍然可以减轻损害,我不知道,而不是让我的明文密码散布在服务器周围?通常,我使用password-store
.也许我应该运行自己的 SMTP 服务器?不过我不能为此使用我的域,因为我已经用我自己域的电子邮件设置了 mailbox.org,所以我的 MX DNS 记录指向他们的服务器。我真的不想为此购买另一个域名...
总结 & TL;DR
有没有什么方法可以简单地从我的服务器向 mailbox.org 提供的我自己的地址发送电子邮件,而无需
- 在我的服务器上运行和维护一个复杂的 SMTP 服务器
- 必须在服务器上公开敏感信息(例如我的密码)才能登录提供商的 SMTP 服务器?
如果您只想向您的 mailbox.org 帐户发送电子邮件;您可以将邮件客户端设置为将邮件直接发送到 mailbox.org 的 MX 服务器。这将只允许您将电子邮件发送到
@mailbox.org
帐户,而不是互联网的其余部分。这是因为具有“MX”角色的 SMTP 服务器将不允许邮件发送到它们自己的目的地以外的邮件(或者至少,它们不应该:))。mx1.mailbox.org
用作 SMTP 服务器,在端口 25 上,未经身份验证。例如:
回答有关使用 gmail 发送电子邮件不起作用的部分,因为我遇到了同样的问题:
要使用 google 的 smtp 发送电子邮件,您必须启用一个名为 less secure apps 的设置,否则它将无法工作,位于:google account,security,less secure apps。之后,您可以使用您最喜欢的邮件命令(mail、sendmail、sendemail、ssmtp ..),只需记住为该命令打开 tls 选项。
安全方面,专门为此目的创建一个地址,你就很好。
如果这还不够好,您可以为您的单一用途 gmail 帐户启用双重身份验证,然后生成一个应用程序密码(也在帐户、安全性中)并将其存储在您的服务器上并使用它代替密码(您不能使用您的密码发送启用了 2FA 的电子邮件,您必须使用应用程序密码)。
使用 sendemail 命令的示例: