директива postfix smtp_bind_address не работает

директива postfix smtp_bind_address не работает

Недавно я перешел на новый сервер (работающий под управлением Postfix 3.3.0) и заметил, что настройка smtp_bind_addressвмастер.cfне оказывает никакого эффекта. У рассматриваемого сервера 10 адресов ipv4, и важно, чтобы исходящая почта направлялась через правильный. Вот фрагмент того, что у меня есть (192.168.100.1 — это всего лишь пример, фактический ip — это реальный wan-адрес):

smtp      inet  n       -       y       -       -       smtpd
  -o smtp_bind_address=192.168.100.1
smtps     inet  n       -       y       -       -       smtpd
  -o smtp_bind_address=192.168.100.1

У меня также запущены amavis и postsrsd вместе с этим почтовым сервером, поэтому почта передается от одной службы к другой, и, честно говоря, я немного запутался в этой цепочке событий, но раньше эта конфигурация работала отлично.

Я пытался переехать smtp_bind_addressвmain.cfи это сработало, но возникли другие проблемы, поскольку и amavis, и postsrsd ожидают, что почта будет передаваться через 127.0.0.1.

Как привязать исходящую почту к определенному адресу в сочетании с моими фильтрами контента?

решение1

Исходящие соединения smtp/relay контролируются этими линиями вmaster.conf

smtp      unix  -       -       y       -       -       smtp
relay     unix  -       -       y       -       -       smtp

Таким образом, вы можете добавить -o smtp_bind_address=192.168.100.1то, что вам нужно.

Также вы можете использовать эту комбинацию вmain.conf

inet_interfaces = 127.0.0.1 192.168.100.1
smtp_bind_address = 192.168.100.1

Это позволяет приложениям подключаться к 127.0.0.1, при этом по умолчанию привязывая исходящий SMTP-трафик к определенному адресу.

Не забывайте, что брандмауэр может переопределить все эти конфигурации, например, это простое правило:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

будет транслировать исходный адрес любого исходящего соединения (из интерфейса eth0) в первичный (по умолчанию) адрес этого интерфейса. С другой точки зрения, вы можете установить исходный адрес smtp-соединений с помощью брандмауэра (без настройки postfix):

iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -j SNAT --to-source 192.168.100.1

Но это не гибко, и я бы применял это только в крайнем случае (например, у вас нет прав на изменение настроек Postfix).

Связанный контент