Як змусити Postfix використовувати іншу IP-адресу?


21

Я використовую поштовий сервер Postfix і в мене є 6 IP-адрес. Я хотів би використовувати інший IP для поштового сервера Postfix для надсилання пошти, ніж веб-сервер.

Як я можу це зробити? Моя версія Postfix - 2.3.3.

Наприклад: основний IP: 66.66.66.66 інший IP: 66.66.66.67

Відповіді:


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_interface потрібно змінювати, оскільки я не хочу отримувати пошту на цьому сервері. Зауважте, цей 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, відключіть функцію backback_relay, щоб уникнути циклів MX
реле unix - - - - - smtp
        -o smtp_fallback_relay =

до цього:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Якщо передавати пошту як резервну копію MX, відключіть функцію backback_relay, щоб уникнути циклів MX
реле unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Звичайно, замість 192.168.0.1 ви повинні використовувати одну з своїх IP-адрес, ту, з якої ви хочете надіслати пошту.

Золтан


Я думаю, що в той час я хотів, щоб поштовий сервер прослуховував лише одну IP-адресу як для вхідної, так і для вихідної електронної пошти. Але ніколи, я ціную додаткову інформацію. Спасибі.
EarthMind

1
це буде працювати з ipv6? Якщо так, чи можу я включити дві адреси та прив’язати до однієї з кожної? З цим рішенням я все-таки отримую вихідну пошту через ipv6, а не вказану
Ipv4

Я додав -o smtp_bind_address6=1:2:3:4:5:6:7:8і, здається, працює.
billynoah

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

Транспортна таблиця_випадкова

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 з трьох різних IP-адрес.

Потім ви створюєте 3 транспорту (rotate1, rotate2 та rotate3) з 3-ма різними IP-адресами, а потім встановлюєте на mysql-лінії:

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

Потім, коли постфікс буде рандомізувати три різні транспорти (повернути один на три), щоб надіслати ці електронні листи.


3

Відредагуйте /etc/postfix/main.cf і переконайтесь, що присутній наступний рядок

inet_interfaces = 66.66.66.67, localhost

Потім запустіть "postfix reload"


2
Це встановлює лише IP-адресу для прослуховування SMTP-з'єднань, а не IP-адресу, що використовується для надсилання вихідної пошти.
ub3rst4r
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.