Postfiks na serwerze programistycznym pozwala na wysyłanie poczty tylko do jednej domeny

11

Mamy postfiks na naszym serwerze programistycznym i chciałbym, aby mógł on wysyłać pocztę tylko do naszej domeny, a nie do innych domen, uniemożliwiając użytkownikom zewnętrznym przypadkowe otrzymywanie poczty z naszego serwera programistycznego.

Przeszukałem dokumenty, wypróbowałem kilka rzeczy, ale wciąż wysyła się do wszystkich domen ...

datadevil
źródło

Odpowiedzi:

7

Mapy transportu (5) służą do ponownego zdefiniowania sposobu, w jaki poczta e-mail jest kierowana przez Postfix.

  • Dodaj następujący wiersz do /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Dodaj nowy plik / etc / postfix / transport z tą zawartością:

    .example.com   :
    example.com    :
    *              discard:
    

Zastąp example.comdomeną, do której serwer pocztowy powinien nadal wysyłać wiadomości e-mail. Jeśli nie interesują Cię subdomeny, usuń pierwszą linię.

Nie zapomnij o haszowaniu pliku po edycji postmapem (1) i ponownym załadowaniu postfiksa, aby zmiany mogły zostać wprowadzone:

# postmap /etc/postfix/transport && postfix reload
Carlo Arenas
źródło
7

Możesz łatwo ograniczyć odbiorców standardowymi ograniczeniami smtpd_recipient_restrictions lub dokładniej check_recipient_access .

Wystarczy utworzyć tabelę dostępu (5)/etc/postfix/access z następującą zawartością ( example.com jest domeną, do której chcesz zezwolić na wysyłanie poczty):

example.com    OK

Możesz także zezwolić tylko na określone adresy:

[email protected]    OK
[email protected]    OK

Nie zapomnij o haszowaniu pliku po edycji za pomocą postmapy (1) :

# postmap /etc/postfix/access

Teraz umieść następujące ograniczenia adresatów w pliku main.cf:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

i przeładuj Postfix:

postfix reload

Następnie sprawdź, czy działa .

joschi
źródło
1
Będzie to działać w przypadku poczty wysyłanej za pośrednictwem SMTP, a nie za pomocą komendy / usr / lib / sendmail, a lokalne procesy mogą to zrobić. Wygląda na to, że ustawienie „Author_submit_users” może być użyte do blokowania lokalnego przesyłania za pomocą sendmaila / postdropu, wtedy wystarczą ograniczenia smtpd.
Jacek Konieczny
6

Więc jeśli ktoś potknie się o to, tak jak ja: odpowiedź rzeczywiście brzmi: header_checks i działa tak:

  • Dodaj następujący wiersz do /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Dodaj nowy plik /etc/postfix/header_checksz tą zawartością:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT [email protected]
    

Zastąp allowed-domain.comdomeną, do której serwer pocztowy powinien nadal wysyłać wiadomości e-mail. Zamień [email protected]na adres e-mail, na który powinny zostać przekierowane wszystkie pozostałe e-maile.

Jeśli chcesz zezwolić na wiele domen, pierwsza linia powinna wyglądać następująco:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Zamiast przekierowywania możesz po prostu upuścić wszystkie inne wiadomości. Zamień drugi wiersz powyżej na:

/^To:.*@/   DISCARD No outgoing mails allowed

Wyjaśnienie:

  • Postfix przechodzi jeden po drugim przez nagłówki wiadomości.
  • Każda linia nagłówka jest dopasowywana do header_checkspliku linia po linii.
  • Jeśli pasuje do pierwszego wiersza ( To:zawiera dozwoloną domenę), przeskakuje do następnego wiersza nagłówka i ponownie rozpoczyna sprawdzanie nagłówka od góry. Ponieważ żadna inna linia nie pasuje, oznacza to, że poczta zostanie dostarczona.
  • Jeśli pasuje do drugiej linii ( To:zawiera inny zewnętrzny adres e-mail), przekierowuje pocztę.
Jonas
źródło
wydaje się, że ten problem został rozwiązany za pomocą tej odpowiedzi, może powinien być oznaczony jako rozwiązany? (działało to jak urok dla mnie przynajmniej)
Sverre
co Cc:i Bcc:?
Paul Tobias
3

Czy próbowałeś header_checks (5) ?

0x44
źródło
nie, sprawdzam to teraz
datadevil