搜索

2.2. 安装和配置 Postfix SMTP 服务器

download PDF

您可以将 Postfix SMTP 服务器配置为接收、存储和发送电子邮件消息。如果在系统安装期间没有选择邮件服务器软件包,则 Postfix 默认不可用。执行以下步骤来安装 Postfix:

先决条件

流程

  1. 禁用并删除 Sendmail 工具:

    # dnf remove sendmail
  2. 安装 Postfix:

    # dnf install postfix
  3. 要配置 Postfix,请编辑 /etc/postfix/main.cf 文件并进行以下更改:

    1. 默认情况下,Postfix 仅在 loopback 接口上接收电子邮件。要将 Postfix 配置为侦听特定的接口,请将 inet_interfaces 参数更新为这些接口的 IP 地址:

      inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]

      要将 Postfix 配置为侦听所有接口,请设置:

      inet_interfaces = all
    2. 如果您希望 Postfix 使用与 gethostname() 函数返回的完全限定域名(FQDN)不同的主机名,请添加 myhostname 参数:

      myhostname = <smtp.example.com>

      例如,Postfix 将此主机名添加到其处理的电子邮件的标头中。

    3. 如果域名与 myhostname 参数中的不同,请添加 mydomain 参数:

      mydomain = <example.com>
    4. 添加 myorigin 参数,并将其设置为 mydomain 的值:

      myorigin = $mydomain

      使用这个设置时,Postfix 使用域名作为本地发布的邮件的源,而不是主机名。

    5. 添加 mynetworks 参数,并定义允许发送邮件的可信网络的 IP 范围:

      mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64

      如果来自不信任网络(如互联网)的客户端应该能够通过这个服务器发送邮件,则您必须在后续步骤中配置中继限制。

  4. 验证 main.cf 文件中的 Postfix 配置是否正确:

    $ postfix check
  5. 启用 postfix 服务,以在引导时启动:

    # systemctl enable --now postfix
  6. 允许 smtp 流量通过防火墙,并重新载入防火墙规则:

    # firewall-cmd --permanent --add-service smtp
    
    # firewall-cmd --reload

验证

  1. 验证 postfix 服务是否正在运行:

    # systemctl status postfix
    • 可选:如果输出处于停止、等待状态或服务没有运行,请重启 postfix 服务:

      # systemctl restart postfix
    • 可选:在更改 /etc/postfix/ 目录中配置文件中的任何选项后,重新载入 postfix 服务,以应用这些更改:

      # systemctl reload postfix
  2. 验证系统上本地用户之间的电子邮件通信:

    # echo "This is a test message" | mail -s <SUBJECT> <user@mydomain.com>
  3. 要验证您的邮件服务器是否没有将来自外部 IP 范围的电子邮件中继到外域,请按照以下步骤操作:

    1. 登录到不在 mynetworks 中定义的子网内的客户端。
    2. 将客户端配置为使用您的邮件服务器。
    3. 尝试发送电子邮件到不在您邮件服务器的 mydomain 中指定的域下的电子邮件地址。例如,尝试向 non-existing-user@redhat.com 发送电子邮件。
    4. 检查 /var/log/maillog 文件:

      554 Relay access denied - the server is not going to relay.
      250 OK or similar - the server is going to relay.

故障排除

  • 如果出现错误,请检查 /var/log/maillog 文件。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.