当我尝试postfix
在我的家庭桌面系统上安装时,我会看到一个配置对话框,其中包含以下选项1:
- 无配置:应选择保持当前配置不变。
- Internet 站点:使用 SMTP 直接发送和接收邮件。
- 带有 smarthost 的 Internet:使用 SMTP 或通过运行 fetchmail 等实用程序直接接收邮件。外发邮件使用智能主机发送。
- 卫星系统:所有邮件都被发送到另一台称为“智能主机”的机器上进行投递。
- 仅限本地:唯一投递的邮件是本地用户的邮件。没有网络。
我的主要兴趣是为在我的桌面上运行的非交互式程序(主要是守护进程和 cron 作业)提供一种方法来将通知发送到我的手机(发送到我当前的电子邮件地址或手机上的 SMS 客户端)。
如果此类通知也可以在本地发送给root
用户,那将非常方便,但这是次要要求。
我的桌面系统通过 ISP (Xfinity) 连接到互联网。
我想从一开始就排除了选项1。
能够向我当前(即非“本地”)电子邮件地址发送邮件的要求排除了选项 5。
这留下了选项 2、3 和 4,但我无法从上面的描述中找出我应该选择的内容。
编辑:赏金描述中有一个错字(不幸的是,我无法再修正);它说的地方
...选项( 1 )中提到的“互联网站点”到底是什么,...
应该
...选项( 2 )中提到的“互联网站点”到底是什么,...
编辑 2:在阅读了我的问题的第一个答案后,我意识到我写的赏金描述不够明确。在这个描述中,我为我的电子邮件地址、我的 ISP 和我的主机名给出了(虚构但现实的)值。我还要求避免使用占位符值,例如www.example.org
. 我将所有这些规定都放在赏金描述中,因为我希望答案包括原始问题中指定的用例的后缀配置文件。很抱歉,我没有在赏金说明中明确说明这一点(尽管这是我所说的“详细说明”)。
1从对话框中逐字复制各种选项的描述。
主要选项解释
此选项要求您拥有完全限定的域名和修改此域名的 DNS 记录的完全访问权限,因为此方法需要添加 MX 记录和反向 DNS 才能发送和接收电子邮件。
此选项要求您具有完全限定的域名,但不一定具有修改此域名的 DNS 记录的完全访问权限。您支付邮件服务提供商或智能主机代您发送电子邮件的费用,并通过处理您的域名的 MX 和其他 DNS 记录或通过在他们的服务器上接收它们来提供路由/方法来将传入的电子邮件发送到您的计算机并为您提供使用邮件服务器地址、端口和凭据,以便您可以使用不同的协议(如 POP 和 IMAP)定期获取传入的电子邮件。
此选项不需要您拥有完全限定的域名,也不需要修改 DNS 记录的权限。正如您的问题中所述,这符合您的目的。
设置电子邮件中继
1. 常规设置
您可以重新配置后缀并选择正确的选项,如下所示:
在配置屏幕中,您将看到:
邮件配置的一般类型:从中选择Satellite system。
系统邮件名称:默认情况下很可能会显示您机器的主机名。
SMTP 中继主机(空白表示无):此阶段无关紧要,因为您将在修改时重新设置它,
/etc/postfix/main.cf
因此保留默认值。Root 和 postmaster 邮件收件人:将其留空以将本地电子邮件
postmaster
发送/etc/aliases
到/var/mail/nobody
或设置系统用户接收它...这与中继电子邮件无关。这是为了处理本地发送到例如 root@localhost 或其他本地用户帐户的电子邮件,这些帐户可能/etc/aliases
包含以下内容:其他接受邮件的目的地(空白表示无):这些是您的 postfix 安装将接受他们的电子邮件的主机名......所以将其保留为默认值,这将是您当前机器的所有可能的主机名。
强制在邮件队列上同步更新?:这告诉 postfix 实现某种内部日志系统,这会减慢它的速度,但只有当您的文件系统不是日志文件系统时才需要,而 Ubuntu 的 ext4 文件系统不是这种情况......所以选择没有。
本地网络:类似于上面的“接受邮件的其他目的地”...这是一项安全功能,因此您网络上或网络外部的其他主机无法通过您的 postfix 实例发送电子邮件...所以将其保留为默认值。
邮箱大小限制(字节):不言自明...我建议您将其保留为默认值,即无限制。
本地地址扩展字符:将其保留为默认值,因为电子邮件提供商会将其后缀集成的具体说明基于此默认值。
要使用的 Internet 协议:除非您知道自己在做什么,否则不要使用它……一切都应该可以正常工作。
值得一提的是,如果您编辑
/etc/postfix/main.cf
后记,那么您在上述初始配置期间选择的选项无关紧要,许多指南建议选择不同的选项......比较这个和这个......但是这些指南并没有清楚地解释这一点并且这可能会引起一些混乱。例如,一个指南告诉您选择Internet 站点,然后后记告诉您修改/etc/postfix/main.cf
和设置relayhost
哪个会将后缀从独立邮件服务器更改为中继邮件服务器,即好像将选项更改为卫星系统!对于中继选项
/etc/postfix/main.cf
将包含relayhost
设置为电子邮件提供商的内容,如下所示:2. 电子邮件提供商的具体设置
之后,请按照您的电子邮件提供商的特定说明进行后缀集成,例如:
这些设置后缀中继到Gmail的简单说明。
这些简单的说明设置后缀中继到雅虎。
如果其他电子邮件提供商提供此功能,则该过程应该类似。如果您的电子邮件帐户在其他提供商处,请参阅他们有关
relayhost
地址、端口、安全性和身份验证的文档。请注意特定的中继电子邮件提供商要求,例如为 Gmail 启用不太安全的应用程序,否则 postfix 将被拒绝访问和连接到 Gmail。
额外资源
postfix
通过 Yahoo 邮箱发送电子邮件的分步指南。我正在按要求发布(希望如此)从 Yahoo 邮箱发送电子邮件的完整指南。本指南与使用 Gmail时所需要的略有不同,如此处所示,可能还有其他服务器,但这种特殊性对于使其正常工作至关重要。
注意:我已经实际测试过了,并且在我的目标地址中成功收到了电子邮件。 它也适用于本地(传出、传入)地址。
Raffa ( 1 , 2 ) 的两个回答和进一步的评论对我帮助很大。但是仍然需要大量的阅读和修补才能使其发挥作用。
安装
postfix
和其他软件包。将显示安装后的配置。如果没有,请使用
$ sudo dpkg-reconfigure postfix
. 对于连续的屏幕,使用: 1. 卫星系统(但可能不相关,因为稍后您将修改后缀配置文件),2.myubuntubox
, 3.[smtp.mail.yahoo.com]:465
, 4.root
, 5 和以下:保留默认值。postfix
使用App 密码启用您的 Yahoo 帐户进行交互。这是一次性密码,可避免将 Yahoo 邮件密码留在您的 PC 中。转到https://login.yahoo.com/account/security,帐户安全->应用密码并生成密码。稍后您将不得不使用它。如果不使用两步验证,这肯定有效,也可能使用 2SV。请注意,在 Gmail 中,“应用密码只能用于已开启两步验证的帐户。” (来源)。在这种情况下,您将使用应用程序密码,因为
postfix
与许多其他应用程序一样,它是一个“安全性较低的应用程序”。将以下行添加到
/etc/postfix/main.cf
如果出现在
/etc/postfix/main.cf
,注释行带有初始哈希标记
#
以避免警告消息。我没有发布完整的文件。如果您发现这些说明存在问题,请发布反馈。创建/编辑
/etc/postfix/sasl_passwd_yahoo
,使其包含<password>
应替换为生成的App 密码。使用以下命令
创建/编辑
/etc/postfix/regex_map_yahoo
时,其内容应为发送电子邮件,例如
实际上,这些配置选项都不能直接在典型的家庭终端用户机器上使用。如果您有一个拥有自己的域名的托管服务器,您可以在该服务器上配置 Postfix,那么选项 2 效果很好。选项 3 和 4 可以很好地工作,例如在公司 LAN 中,您在 DNS 中有一个可识别的“真实”域,您的客户端计算机是其中的一部分(顺便说一句,我不完全理解选项 3 和 4 之间的区别只是从描述中——我需要查看这些选项生成的实际配置文件,以确定它们的实际含义)。
无论您选择什么,您都可能需要在初始设置后手动修改 Postfix 配置文件。实际上,因为无论如何您都必须修改配置,所以也不排除选项 1,这与您的假设相反。
电子邮件可能是所有网络服务中配置最复杂的,因此我建议不要“盲目”依赖自动配置提供的任何默认值,而是了解 Postfix 配置的工作原理并对配置文件进行所有必要的更正( s) 手动。您需要测试、测试并再次测试您的配置,以确保一切按预期工作。电子邮件配置不是您可以在不了解其工作原理的情况下仅“复制和粘贴”的东西。
一个好的开始是http://www.postfix.org/BASIC_CONFIGURATION_README.html - 本文档询问您在开始配置 Postfix 之前需要回答的一些基本问题,并解释了配置的基本概念。阅读完之后,请查看http://www.postfix.org/STANDARD_CONFIGURATION_README.html - 它提供了几个典型场景的配置。但是,与您询问的配置菜单一样,这些场景都不完全适用于您的情况。
可能最符合您的需求的是描述为“空客户端上的后缀”的场景,但是有两件事没有涉及。本例中的“空客户端”是一台机器: a) 不接收来自网络的任何邮件;b) 不在本地投递任何邮件——但是,如果您需要,可以更改(但我在这里不做介绍,因为这个答案已经很长了);c) 将所有外发邮件发送到smarthost,即。处理您要发送的域的所有邮件的服务器 - 在您的情况下,它可能是 Yahoo 服务器,与您从邮件客户端发送邮件时使用的服务器相同。
稍后我将详细说明为什么需要使用 smarthost。这里缺少的一件重要的事情是,在您的情况下,您的 Postfix 将需要对智能主机进行身份验证。这在此处进行了介绍:http ://www.postfix.org/SOHO_README.html
您需要结合这些文档中与您的案例相关的所有信息,以获得一个单一、合理且可用的配置文件。
为什么这么复杂?通常,因为您的机器没有一个可以在 Internet 上识别的“正确”域名。您可以在初始配置中使用任何选项 - 2,3 或 4 - 您的 Postfix 将能够发送邮件,但是能够发送邮件是一回事;将您的邮件实际送达目的地是另一回事。如果您使用默认配置,互联网上常用的各种反垃圾邮件措施可能会导致您的邮件被接收服务器拒绝。这就是需要修改的原因。
问题的根源在于您发送的每封电子邮件都需要有一些发件人电子邮件地址。如果您的机器分配了“合法”域名,您可以使用选项 2 对其进行配置,并使用user @ domain作为电子邮件地址发送电子邮件,其中user是您机器上发送电子邮件的任何用户名,而domain是分配给您的机器的域名。
但是您没有可靠的域。因此,首先要考虑的是您想为您的电子邮件使用哪个发件人地址?可能最安全的选择是使用您的真实电子邮件地址 [email protected]。否则 - 如果您没有在发送程序中设置任何发件人地址 - Postfix 将构成一些默认域名,并将例如从您的 cron 作业发送为“[email protected]”的邮件(“localdomain”在此处逐字显示)。由于 Internet 中不存在域“myubuntubox.localdomain”,因此接收服务器可能不会接受此消息,并且您将在 Postfix 日志中看到拒绝。
因此,您应该确保将发送邮件的每个程序都提供正确的发件人地址。那件事基本上超出了 Postfix 配置的范围。您需要在每个发送邮件的程序或脚本中配置它。可以让 Postfix 重写任何用于 [email protected] 的发件人地址,但这是一个更复杂的功能,在尝试之前你应该已经有了一个有效的配置(并且知道一些关于配置 Postfix 的知识)。所以最好在客户端做。
但是使用来自 yahoo.com 域的电子邮件地址发送也是有问题的,因为您机器的 IP 地址不属于分配给 Yahoo 的地址池。接收服务器可能会检测到它并拒绝您的邮件。这就是您需要使用智能主机的原因 - 这就是选项 3 和 4 中发生的情况。您的机器会将所有邮件传递给智能主机,智能主机将进一步发送。
但是,您不能像在“空客户端上的 Postfix”的默认配置中那样将邮件传递到 Yahoo 服务器,因为此示例假定智能主机“信任”您的机器,并将接受来自该机器的邮件,发件人中具有 smarthost 的域地址。但是雅虎服务器不会只信任你的机器并让它作为 yahoo.com 发送。它几乎肯定会拒绝此类电子邮件。
这是第三个也是最复杂的部分:您不需要将邮件发送到智能主机,而是提交它。提交是 Outlook 或 Thunderbird 等邮件客户端所做的事情。他们不连接到服务器上的默认电子邮件端口(25),而是连接到特殊的提交端口(587 或 465,取决于客户端使用的加密方法),使用您的 Yahoo 登录名和密码向服务器进行身份验证,并且然后继续发送邮件。客户端向服务器进行身份验证后,服务器信任它并接受来自它的邮件。
同样,您的 Postfix 需要对您的智能主机进行身份验证,即。雅虎服务器。为此,您需要安装(除了 Postfix)身份验证引擎(Cyrus SASL)并按照http://www.postfix.org/SOHO_README.html中所述配置 Postfix
问题
“我的主要兴趣是为在我的桌面上运行的非交互式程序(主要是守护程序和 cron 作业)提供一种方法,以将通知发送到我的手机(发送到我当前的电子邮件地址或手机上的 SMS 客户端)。 "
替代方案
在我对如何设置 Cron 发送电子邮件的回答中?[重复]我用过
ssmtp
. 在同一个线程中,您会找到一个postfix
您可能感兴趣的解决方案。至于收到手机短信,我还有另一个答案:
如果您热衷于追求仅后缀的解决方案,这里是一个很好的教程: