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

21

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

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

Например: основной IP: 66,66,66,66 другой IP: 66,66,66,67

EarthMind
источник

Ответы:

25

Вы хотите smtp_bind_address=66.66.66.67и / inet_interfaces=allили inet_interfaces=eth(whatever)66.66.66.67 включен.

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

Билл Вайс
источник
Я попробовал опцию smtp_bind_address, но мой почтовый сервер больше не отправляет почту. И я не думаю, что inet_interfaces нужно менять, так как я не хочу получать почту на этом сервере. Обратите внимание, этот IP используется только для отправки почты.
EarthMind
Пожалуйста, оставьте свой, postconf -nчтобы мы могли видеть, о чем вы говорите. Например, анонимизируйте IP-адреса как частные IP-адреса (10.xxx и т. Д.) И домены. (Com | net | org | что угодно), если вам это нужно.
Билл Вайс
2
smtp_bind_address был правильным способом, и у меня просто была задержка в доставке электронной почты, так как у нового IP, который я использовал, не было записи rDNS. Доброе спасибо за вашу помощь.
EarthMind
3
smtp_bind_addressустанавливает адрес IPv4, эквивалент IPv6smtp_bind_address6
Пол Тобиас
16

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

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

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

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

smtp unix - - - - - smtp
# При передаче почты в качестве резервного MX отключите fallback_relay, чтобы избежать циклов MX
реле unix - - - - - smtp
        -o smtp_fallback_relay =

к этому:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# При передаче почты в качестве резервного MX отключите fallback_relay, чтобы избежать циклов MX
реле unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

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

Zoltan

Zoltan
источник
Я думаю, что в то время я хотел, чтобы почтовый сервер прослушивал только один IP-адрес для входящей и исходящей электронной почты. Но, тем не менее, я ценю дополнительную информацию. Спасибо.
EarthMind
1
это будет работать с ipv6? Если да, могу ли я включить два адреса и привязать к одному из каждого? С этим решением я все еще получаю исходящую почту по ipv6, а не по адресу ipv4, который я указал
billynoah
Я добавил -o smtp_bind_address6=1:2:3:4:5:6:7:8и, кажется, работает.
Биллиноах
1
Это не точно. Это есть возможность сделать постфикс слушать на нескольких интерфейсах с помощью добавления всех из них inet_interfaces- или просто установив его all(по умолчанию) и настройки smtp_bind_address. Один адрес, указанный через smtp_bind_address (или smtp_bind_address6), затем независимо используется для отправки SMTP-сообщения Postfix.
maxschlepzig
Я добавил -o smtp_bind_address в мой master.cf, и он не работал. Я использовал его в main.cf, и он работал.
Ариб Су Ясир
10

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. Включить зависимую транспортную карту (требуется постфикс 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 будет рандомизировать три разных транспорта (повернуть один на три), чтобы отправить это письмо.

Рамиро
источник
3

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

inet_interfaces = 66.66.66.67, localhost

Затем запустите «перезагрузка постфикса»

Мэтт Симмонс
источник
2
Это только устанавливает IP-адрес для прослушивания SMTP-соединений, а не IP-адрес, который будет использоваться для отправки исходящей почты.
ub3rst4r