配置 Postfix 以使用具有不同选项的重复服务

配置 Postfix 以使用具有不同选项的重复服务

我正在尝试创建两个不同的配置,用于在 Postfix 中发送出站电子邮件,为 smtpd 使用两个绑定 IP(主 IP=11.11.11.11 和辅助 IP=22.22.22.22)。但是,我当前的设置遇到了问题。以下是我迄今为止尝试过的方法:

  1. 在 main.cf 中添加了以下行:
    sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport smtp_bind_address = 11.11.11.11
  1. 创建并发布/etc/postfix/sender_transport内容如下:
    @example.com smtp2
  1. master.cf为第二个 smtp添加一行:
    smtp2 inet n - y - - smtpd
      -o smtp_bind_address=22.22.22.22

重新启动 Postfix 后,我收到此错误:

Mar 23 09:02:23 test1 postfix/master[93837]: fatal: 127.0.0.1:smtp2: Servname not supported for ai_socktype

当我添加 smtp2 服务/etc/services并尝试从 example.com 发送时,遇到了以下消息:

warning: connect to transport private/smtp2: No such file or directory

Mar 23 09:02:53 test1 postfix/error[93181]: B8B8E3F1B4: [email protected], relay=none, delay=564, delays=564/0.02/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)

我怀疑我的方法中可能存在概念上的误解,但我不确定是什么。

答案1

无需混合传出端口和内部可达性。通过 smtp 接受消息的组件(smtpd=守护进程)和通过 smtp 传输消息的组件(无 d =客户端角色)是分开的。

当您创建新的传出 SMTP 传输时,您希望将其绑定到 unix 套接字,仅供 postfix 访问。此类套接字由 (文件) 名称标识,与 中的命名端口预留无关/etc/services

阅读完之后man 5 masterman 8postfix smtpman 5 transport可能会接受如下配置:

# in master.cf:
smtp-identifier unix - - y - 3 smtp
 -o syslog_name=postfix/$service_name
 -o smtp_bind_address=192.0.2.22
 -o smtp_bind_address6=2001:db8::d34d:beef

# in any transport map:
#  a name before the colon overrides transport
#  a name without colon would merely override nexthop of unchanged transport
@example.com    smtp-identifier:

服务最终用于传输消息的TCP端口将被动态分配。

相关内容