Jak zmusić Postfix do użycia innego adresu IP?

21

Korzystam z serwera pocztowego Postfix i mam 6 adresów IP. Chciałbym użyć innego adresu IP dla serwera pocztowego Postfix do wysyłania poczty niż serwer internetowy.

W jaki sposób mogę to zrobić? Moja wersja postfiksowa to 2.3.3.

Na przykład: główny adres IP: 66.66.66.66 inny adres IP: 66.66.66.67

EarthMind
źródło

Odpowiedzi:

25

Chcesz smtp_bind_address=66.66.66.67i inet_interfaces=allczy inet_interfaces=eth(whatever)66.66.66.67 jest włączony.

Dokonaj tej zmiany, a następnie zatrzymaj / uruchom postfiks. Nie możesz po prostu przeładować, jeśli się zmieniaszinet_interfaces

Bill Weiss
źródło
Próbowałem opcji smtp_bind_address, ale mój serwer pocztowy nie wysyła już poczty. I nie sądzę, że inet_interfaces musi zostać zmieniony, ponieważ nie chcę odbierać poczty na tym serwerze. Uwaga: ten adres IP służy wyłącznie do wysyłania poczty.
EarthMind,
Prześlij swoje postconf -n, abyśmy mogli zobaczyć, o czym mówisz. Anonimizuj adresy IP jako prywatne adresy IP (10.xxx itp.) I domeny jako przykład. (Com | net | org | cokolwiek), jeśli uważasz, że potrzebujesz.
Bill Weiss,
2
adres smtp_bind_address był właściwy i właśnie miałem opóźnienie w dostarczeniu e-maila, ponieważ nowy adres IP, którego używałem, nie miał rekordu rDNS. Dziękuję za pomoc.
EarthMind,
3
smtp_bind_addressustawia adres IPv4, odpowiednikiem IPv6 jestsmtp_bind_address6
Paul Tobias
16

Jeśli użyjesz rozwiązania „smtp_bind_address”, twój serwer pocztowy będzie nasłuchiwał tylko pod tym adresem IP dla poczty przychodzącej. To samo dotyczy rozwiązania „inet_interfaces”. To może nie być pożądane rozwiązanie, jeśli chcesz nasłuchiwać poczty przychodzącej na wielu adresach IP / interfejsach.

Moje rozwiązanie jest lepsze, ponieważ sugeruję, aby nie zmieniać domyślnych ustawień „smtp_bind_address” i „inet_interfaces”, aby Twój serwer pocztowy nadal nasłuchiwał na wszystkie adresy IP.

Wystarczy wprowadzić niewielką zmianę w pliku /etc/postfix/master.cf.

Zmień tę część:

smtp unix - - - - - smtp
# Podczas przekazywania poczty jako zapasowego MX, wyłącz fallback_relay, aby uniknąć pętli MX
przekaźnik unix - - - - - smtp
        -o smtp_fallback_relay =

do tego:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Podczas przekazywania poczty jako zapasowego MX, wyłącz fallback_relay, aby uniknąć pętli MX
przekaźnik unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Oczywiście zamiast 192.168.0.1 musisz użyć jednego z adresów IP, z którego chcesz wysłać swoją pocztę.

Zoltan

Zoltan
źródło
Myślę, że w tym czasie chciałem, aby serwer pocztowy nasłuchiwał tylko jednego adresu IP, zarówno dla poczty przychodzącej, jak i wychodzącej. Ale doceniam dodatkowe informacje. Dzięki.
EarthMind
1
czy to zadziała z ipv6? Jeśli tak, to czy mogę dołączyć dwa adresy i powiązać z jednym z nich? Dzięki temu rozwiązaniu nadal otrzymuję pocztę wychodzącą przez ipv6, a nie adres
IPv4, który podałem
Dodałem -o smtp_bind_address6=1:2:3:4:5:6:7:8i wydaje się, że działa.
billynoah
1
To nie jest dokładne. Możliwe jest , aby postfiks nasłuchiwał na wielu interfejsach, dodając je wszystkie do inet_interfaces- lub po prostu ustawiając je na all(domyślne) i konfigurując smtp_bind_address. Jeden adres określony za pomocą smtp_bind_address (lub smtp_bind_address6) jest następnie niezależnie używany w procesie wysyłania smtp Postfix.
maxschlepzig
Dodałem -o smtp_bind_address do mojego master.cf i to nie działało. Użyłem go w main.cf i zadziałało.
Areeb Soo Yasir
10

master.cf

Twórz różne interfejsy. Jeden dla każdej domeny:

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. Wyłącz wszystkie inne mapy transportowe, tj .: # transport_maps = xxxxx

  2. Włącz zależną mapę transportu (wymagany jest postfix 2.7.x lub nowszy)

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

transport_random_dependent.cf

Przykład:

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

Tabela transport_losowy

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.

Instrukcja „RAND () LIMIT 1” jest niezbędna tylko wtedy, gdy chcesz używać losowych transportów dla tej samej domeny.

Na przykład chcesz wysłać z mydomain.com z 3 różnych adresów IP.

Następnie tworzysz 3 transporty (rotate1, rotate2 i rotate3) z 3 różnymi adresami IP, a następnie ustawiasz na linie mysql:

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

Następnie, gdy postfix losowo trzy różne transporty (obróć jeden do trzech), aby wysłać te e-maile.

Ramiro
źródło
3

Edytuj /etc/postfix/main.cf i upewnij się, że jest dostępna następująca linia

inet_interfaces = 66.66.66.67, localhost

Następnie uruchom „postfix reload”

Matt Simmons
źródło
2
To tylko ustawia adres IP do nasłuchiwania połączeń SMTP, a nie adres IP, który będzie używany do wysyłania poczty wychodzącej.
ub3rst4r