主要选项说明

主要选项说明

当我尝试在我的家庭桌面系统上安装时postfix,我得到一个包含以下选项的配置对话框1

  1. 沒有配置:应选择保持当前配置不变。
  2. 互联网网站:直接使用 SMTP 发送和接收邮件。
  3. 使用智能主机的互联网:邮件直接通过 SMTP 接收,或通过运行 fetchmail 等实用程序接收。外发邮件通过智能主机发送。
  4. 卫星系统:所有邮件都被发送到另一台称为“智能主机”的机器进行传送。
  5. 仅限本地:唯一能投递的邮件是本地用户的邮件,没有网络。

我的主要兴趣是让运行在我桌面上的非交互式程序(主要是守护进程和 cron 作业)能够向我的手机发送通知(发送到我当前的电子邮件地址或者发送到我手机上的 SMS 客户端)。

如果可以进行此类通知,那就太方便了在本地发送给root用户,但这是次要要求。

我的桌面系统通过 ISP(Xfinity)连接到互联网。


我认为从一开始选项 1 就被排除了。

能够将邮件发送到我当前(即非“本地”)电子邮件地址的要求排除了选项 5。

这样就剩下选项 2、3 和 4,但是我无法从上述描述中确定应该选择哪一个。


编辑:悬赏描述中有一个拼写错误(不幸的是,我无法修复);它说

...选项中提到的“互联网网站”到底是什么(1),...

应该

...选项中提到的“互联网网站”到底是什么(2),...


编辑2:在阅读了我的问题的第一个答案后,我意识到我写的赏金描述不够明确。在这个描述中,我给出了我的电子邮件地址、我的 ISP 和我的主机名的(虚构但现实的)值。我还要求避免使用占位符值,例如www.example.org。我将所有这些规定都放在赏金描述中,因为我希望答案包含原始问题中指定的用例的后缀配置文件。很抱歉,我没有在赏金描述中明确说明这一点(尽管这就是我所说的“详细说明”)。


1各个选项的描述都是从对话框中逐字复制的。

答案1

主要选项说明

互联网网站:直接使用 SMTP 发送和接收邮件。

此选项要求您拥有完全合格的域名和修改此域名的 DNS 记录的完全访问权限,因为此方法需要添加 MX 记录和反向 DNS 才能发送和接收电子邮件。

使用智能主机上网:使用 SMTP 或运行 fetchmail 等实用程序直接接收邮件。使用智能主机发送外发邮件。

此选项要求您拥有完全合格的域名,但不一定拥有修改此域名的 DNS 记录的完全访问权限。您向邮件服务提供商或智能主机付费,让他们代表您发送电子邮件,并提供路由/方法将传入的电子邮件发送到您的机器,方法是处理您的域名的 MX 和其他 DNS 记录,或者通过在他们的服务器上接收它们,并为您提供邮件服务器地址、端口和凭据,以便您可以使用不同的协议(如 POP 和 IMAP)定期获取传入的电子邮件。

卫星系统:所有邮件都被发送到另一台称为“智能主机”的机器进行传送。

此选项不需要您拥有完全合格的域名,也不需要修改 DNS 记录的权限。正如您在问题中描述的那样,这就是满足您的目的的

设置电子邮件中继

1. 常规设置

您可以重新配置 postfix 并选择正确的选项,如下所示:

sudo dpkg-reconfigure postfix

在配置屏幕中,您将看到:

  • 常规邮件配置类型:从此选择卫星系统

  • 系统邮件名称:输入您机器的主机名,该主机名很可能会默认显示。

  • SMTP 中继主机(空白表示无):在这个阶段没关系,因为当您修改时您会再次设置它,/etc/postfix/main.cf所以保留默认设置。

  • 根和邮件管理员邮件收件人:将其留空,以便将本地电子邮件发送postmaster给定义的用户,或者将系统用户设置为接收电子邮件...这与转发电子邮件无关。这是为了处理本地发送到例如 root@localhost 或其他本地用户帐户的电子邮件,这些帐户可能具有类似以下内容:/etc/aliases/var/mail/nobody/etc/aliases

    # See man 5 aliases for format
    postmaster:    root
    
  • 其他接收邮件的目的地(空白表示无):这些是您的 postfix 安装将接受其电子邮件的主机名...因此,将其保留为默认值,这将仅适用于您当前机器的所有可能的主机名。

  • 强制对邮件队列进行同步更新?:这告诉 postfix 实现某种内部日志系统,这会减慢它的速度,但只有当你的文件系统不是日志文件系统时才需要,而 Ubuntu 的 ext4 文件系统不是这种情况...所以选择

  • 本地网络:与上面的“其他接受邮件的目的地”类似...这是一个安全功能,以便您网络上或外部的其他主机无法通过您的 postfix 实例发送电子邮件...因此将其保留为默认值。

  • 邮箱大小限制(字节):不言自明...我建议您将其保留为默认值,即无限制。

  • 本地地址扩展字符:保留默认值,因为电子邮件提供商将以此默认值为基础对 Postfix 集成进行特定的说明。

  • 要使用的 Internet 协议:保持开启全部除非你知道自己在做什么……全部应该可以正常工作。

值得一提的是,如果您/etc/postfix/main.cf事后进行编辑,那么您在上面的初始配置中选择什么选项并不重要,许多指南建议选择不同的选项......比较...然而,这些指南并没有清楚地解释这一点,这可能会引起一些混淆。例如,一个指南告诉你选择互联网网站然后 afterwords 会告诉你修改/etc/postfix/main.cf和设置relayhost,这将把 postfix 从独立邮件服务器更改为中继邮件服务器,即,就像将选项更改为卫星系统

中继选项/etc/postfix/main.cf将包含一些relayhost设置为电子邮件提供商的内容,如下所示:

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

2. 电子邮件提供商的具体设置

之后,按照您的电子邮件提供商关于 Postfix 集成的具体说明进行操作,例如:

如果其他电子邮件提供商提供此功能,则流程应该类似。如果您的电子邮件帐户属于其他提供商,请参阅其有关relayhost地址、端口、安全性和身份验证的文档。

请注意特定的中继电子邮件提供商要求,例如启用不太安全的应用程序对于 Gmail,否则 postfix 将被拒绝访问和连接 Gmail。

额外资源

答案2

postfix通过雅虎邮箱发送电子邮件的分步指南。

我正在发布(希望)完整的电子邮件发送指南来自雅虎邮箱, 按照要求。本指南与您需要的略有不同,如果使用 Gmail, 如图所示这里,也可能是其他服务器,但是这种特异性对于其发挥作用至关重要

注意:我已经实际测试过,并且成功在目标地址收到了电子邮件它也适用于本地(传出、传入)地址

Raffa 的两个回答(12) 和进一步的评论对我帮助很大。但仍然需要大量阅读和修改才能使其发挥作用。

  1. 安装postfix和其他软件包。

    $ sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
    
  2. 安装后的配置将会显示出来。如果没有,请使用$ sudo dpkg-reconfigure postfix。对于后续屏幕,请使用:1. 卫星系统(但可能无关紧要,因为您稍后会修改 postfix 配置文件),2. myubuntubox,3. [smtp.mail.yahoo.com]:465,4. root,5 及以下:保留默认设置。

  3. 启用您的 Yahoo 帐户postfix应用密码。这是一次性密码,可避免将 Yahoo 邮箱密码留在您的电脑中。前往https://login.yahoo.com/account/security账户安全->应用程序密码并生成密码。您稍后必须使用它。如果不使用两步验证,这肯定有效,也可能使用两步验证。
    请注意,在 Gmail 中,“应用密码只能用于已启用两步验证的帐户。” (来源)。在本例中,您将使用应用密码因为postfix,和许多其他应用程序一样,“不太安全的应用程序”

  4. 将以下行添加到/etc/postfix/main.cf

    relayhost = [smtp.mail.yahoo.com]:465
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd_yahoo
    smtp_sasl_security_options = noanonymous
    smtp_sasl_auth_enable = yes
    smtp_use_tls = yes
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    smtp_tls_wrappermode = yes
    smtp_tls_security_level = encrypt
    smtp_generic_maps = regexp:/etc/postfix/regex_map_yahoo
    

    如果存在于/etc/postfix/main.cf,注释行

    smtp_tls_security_level=may
    

    以井号开头#以避免出现警告消息。我不会发布完整的文件。如果您发现这些说明存在问题,请发布反馈。

  5. 创建/编辑/etc/postfix/sasl_passwd_yahoo以便包含

    [smtp.mail.yahoo.com]:465    [email protected]:<password>
    

    <password>应由生成的应用密码

  6. 使用以下命令

    $ sudo chmod 0600 /etc/postfix/sasl_passwd_yahoo
    $ sudo postmap /etc/postfix/sasl_passwd_yahoo
    $ sudo touch /etc/postfix/regex_map_yahoo
    $ sudo chmod 0600 /etc/postfix/regex_map_yahoo
    $ sudo nano /etc/postfix/regex_map_yahoo
    <---- Creating/editing the file ---->
    $ sudo postmap /etc/postfix/regex_map_yahoo
    $ sudo systemctl restart postfix.service
    

    在创建/编辑时/etc/postfix/regex_map_yahoo,其内容应该是

    /.+@myubuntubox/   [email protected]
    
  7. 发送电子邮件,例如

    $ echo "This is the body of an encrypted email" | mail -s "This is the subject line" [email protected]
    

答案3

实际上,这些配置选项都不能直接用于典型的家庭最终用户机器。如果您拥有一台托管服务器,该服务器有自己的域名,您可以在该服务器上配置 Postfix,则选项 2 效果很好。例如,选项 3 和 4 可以在企业 LAN 中很好地工作,在这种情况下,您的客户端机器属于 DNS 中可识别的“真实”域(顺便说一句,仅从描述中我无法完全理解选项 3 和 4 之间的区别 - 我需要查看这些选项生成的实际配置文件才能确定它们的实际含义)。

不管您选择什么,在初始设置后,您很可能需要手动修改 Postfix 配置文件。实际上,因为无论如何您都必须修改配置,所以选项 1 也不被排除,这与您所假设的相反。

电子邮件可能是所有网络服务中配置最复杂的,因此我建议不要“盲目”依赖自动配置提供的任何默认值,而是了解 Postfix 配置的工作原理,并手动对配置文件进行所有必要的更正。并且您需要测试、测试、再测试您的配置,以确保一切按预期运行。电子邮件配置不是您可以不了解其工作原理而“复制和粘贴”的东西。

一个好的开始是http://www.postfix.org/BASIC_CONFIGURATION_README.html- 本文档询问了您在开始配置 Postfix 之前需要回答的一些基本问题,并解释了配置的基本概念。阅读完后,请查看http://www.postfix.org/STANDARD_CONFIGURATION_README.html- 它提供了几种典型场景的配置。但是,正如您询问的配置菜单一样,这些场景都不完全适用于您的情况。

最符合您需求的可能是“空客户端上的 Postfix”场景,但是有两件事没有涉及。本例中的“空客户端”是指:a) 不从网络接收任何邮件;b) 不本地发送任何邮件 - 但是如果您需要,可以更改(但我不会在这里讨论这一点,因为这个答案已经很长了);c) 将所有外发邮件发送到智能主机,即,处理您发送的域的所有邮件的服务器 - 在您的情况下,它可能是 Yahoo 服务器,与您从邮件客户端发送邮件时使用的服务器相同。

稍后我将详细说明为什么您需要使用智能主机。这里缺少的一件重要的事情是,在您的例子中,您的 Postfix 需要认证到智能主机。内容如下:http://www.postfix.org/SOHO_README.html

您需要将这些文件中与您的情况相关的所有信息结合起来,以获得单独、合理且可用的配置文件。

为什么这么复杂?一般来说,是因为您的机器没有一个可以在互联网上识别的“正确”域名。您可以在初始配置中使用任何选项 - 2、3 或 4 - 并且您的 Postfix 将能够发送邮件,但是能够发送邮件是一回事;要真正收到您的邮件发表邮件到达目的地又是另一回事。互联网上常用的各种反垃圾邮件措施可能会导致您的邮件在默认配置下被接收服务器拒绝。这就是为什么需要进行修改的原因。

问题的根源在于您发送的每封电子邮件都需要有发件人电子邮件地址。如果您的机器已分配“合法”域名,则只需使用选项 2 进行配置,然后使用用户@领域作为电子邮件地址,其中用户是你机器上的用户名发送电子邮件,并且领域是分配给您机器的域名。

但你没有可靠的领域。那么首先要考虑的是你想用哪个发件人地址来发邮件?最安全的选择可能是使用你的真实电子邮件地址,[电子邮件保护]否则 - 如果你没有在发送程序中设置任何发件人地址 - Postfix 将组成一些默认域名,并将从你的 cron 作业发送例如邮件作为“[电子邮件保护]“(“localdomain” 在此处是逐字逐句的)。由于域“myubuntubox.localdomain”在 Internet 上不存在,因此接收服务器可能不会接受此消息,您将在 Postfix 日志中看到拒绝。

因此,您应该确保每个发送邮件的程序都提供正确的发件人地址。这基本上超出了 Postfix 配置的范围。您需要在每个发送邮件的程序或脚本中配置它。可以让 Postfix 重写用于发送邮件的任何发件人地址[电子邮件保护],但这是一个更复杂的功能,在尝试之前,您应该已经有一个可用的配置(并且了解一些有关配置 Postfix 的知识)。所以最好在客户端上执行此操作。

但是使用来自 yahoo.com 域的电子邮件地址发送邮件也存在问题,因为您的计算机的 IP 地址不属于分配给 Yahoo 的地址池。接收服务器可能会检测到它并拒绝您的邮件。这就是您需要使用智能主机的原因 - 这就是选项 3 和 4 中发生的情况。您的计算机会将所有邮件传递给智能主机,然后智能主机会将其进一步发送。

但是,您不能像“空客户端上的 Postfix”的默认配置那样直接将邮件传递给 Yahoo 服务器,因为此示例假设智能主机“信任”您的计算机并将接受来自该计算机的邮件,其中发件人地址中包含智能主机的域。但 Yahoo 服务器不会直接信任您的计算机并允许其以 yahoo.com 的身份发送。它几乎肯定会拒绝此类电子邮件。

接下来是第三部分,也是最复杂的部分:你不需要发送您的邮件发送到智能主机,但提交提交是 Outlook 或 Thunderbird 等邮件客户端所做的事情。它们不连接到服务器上的默认电子邮件端口 (25),而是连接到特殊的提交端口 (587 或 465,具体取决于客户端使用的加密方法),认证使用您的 Yahoo 登录名和密码登录到服务器,然后继续发送邮件。客户端向服务器验证身份后,服务器将信任它并接受来自它的邮件。

同样,您的 Postfix 需要向您的智能主机(即 Yahoo 服务器)进行身份验证。为此,您需要安装(除 Postfix 外)身份验证引擎 (Cyrus SASL) 并按照中所述配置 Postfixhttp://www.postfix.org/SOHO_README.html

答案4

问题

“我的主要兴趣是找到一种方法,让运行在我桌面上的非交互式程序(主要是守护进程和 cron 作业)能够向我的手机发送通知(发送到我当前的电子邮件地址或者发送到我手机上的短信客户端)。”

替代方案

在我的回答中如何设置 Cron 发送电子邮件?[重复]我使用了ssmtp。在同一个线程中,你会发现一个解决方案,使用postfix它可能会让你感兴趣。

至于接收手机短信我有另一个答案:

如果您热衷于追求仅后缀解决方案,这里有一个很好的教程:

相关内容