Назад | Перейти на главную страницу

Как заставить Postfix использовать другой IP-адрес?

Я использую почтовый сервер Postfix, и у меня есть 6 IP-адресов. Я хотел бы использовать другой IP-адрес для почтового сервера Postfix для отправки почты, чем использует веб-сервер.

Как я могу это сделать? Моя версия постфикса - 2.3.3.

Например: основной IP: 66.66.66.66 другой IP: 66.66.66.67

Вы хотите smtp_bind_address=66.66.66.67 и inet_interfaces=all или inet_interfaces=eth(whatever) что 66.66.66.67 идет.

Сделайте это изменение, затем остановите / запустите постфикс. Вы не можете просто перезагрузить, если меняете inet_interfaces

Если вы используете решение "smtp_bind_address", то ваш почтовый сервер также будет прослушивать только этот указанный IP-адрес для входящей почты. То же самое и с решением "inet_interfaces". Это может быть нежелательным решением, если вы хотите прослушивать входящую почту на нескольких IP-адресах / интерфейсах.

Мое решение лучше, потому что я предлагаю не изменять настройки по умолчанию «smtp_bind_address» и «inet_interfaces», чтобы ваш почтовый сервер по-прежнему прослушивал входящую почту на всех IP-адресах.

Нужно только внести небольшое изменение в ваш файл /etc/postfix/master.cf.

Измените эту часть:

smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
        -o smtp_fallback_relay=

к этому:

smtp      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=192.168.0.1
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
        -o smtp_bind_address=192.168.0.1
        -o smtp_fallback_relay=

Конечно, вместо 192.168.0.1 вы должны использовать один из своих IP-адресов, с которого вы хотите отправлять почту.

Золтан

master.cf

Создавайте разные интерфейсы. По одному для каждого домена:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

main.cf

  1. Отключите все остальные транспортные карты, например: # transport_maps = xxxxx

  2. Включить зависимую транспортную карту (требуется postfix 2.7.x или новее)

sender_dependent_default_transport_maps = mysql: /etc/postfix/config/transport_random_dependent.cf

transport_random_dependent.cf

Пример:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

Таблица transport_random

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

Инструкция «RAND () LIMIT 1» необходима только в том случае, если вы хотите использовать случайные транспорты для того же домена.

Например, вы хотите отправить с mydomain.com с 3 разных IP-адресов.

Затем вы создаете 3 транспорта (rotate1, rotate2 и rotate3) с 3 разными IP-адресами, а затем устанавливаете их в строках mysql:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

Затем, когда postfix будет рандомизировать три разных транспорта (повернуть один на три) для отправки этих писем.

Отредактируйте /etc/postfix/main.cf и убедитесь, что присутствует следующая строка

inet_interfaces = 66.66.66.67, localhost

Затем запустите "postfix reload"