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 ...

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

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:

user1@example.com    OK
user2@example.com    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 .


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 redirect@example.com
    

Zastąp allowed-domain.comdomeną, do której serwer pocztowy powinien nadal wysyłać wiadomości e-mail. Zamień redirect@example.comna 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ę.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.