fetchmail / postfix - odrzuć wiadomość, jeśli jest za duża

1

Mam serwer pocztowy Ubuntu, który pobiera wiadomości e-mail od dostawcy usług internetowych przez fetchmail i dostarcza je za pośrednictwem Amavis i Postfix.

Postfix ma limit wielkości około 20 MB. E-maile większe niż to są usuwane z serwera, ale do tej pory zostały po cichu usunięte, ponieważ / etc / fetchmailrc nie ma definicji postmastera i zawierało „set no bounceemail”.

Chciałbym poinformować nadawcę o odrzuconej poczcie. Ale komentarz do „set no bounceemail” („Unikaj strat przy błędach 4xx”) powoduje, że myślę, że zmiana go na „set bounceemail” może być niebezpieczna lub nierozsądna. Jak należy rozumieć ten komentarz?

Czy istnieje sposób dostosowania tej odesłanej wiadomości? Wygląda na to, że pochodzi z „Mail” i zawiera kilka lokalnych informacji, które wydają się być bezużyteczne dla nadawcy zbyt dużej wiadomości.

Przy dalszym myśleniu wydaje się głupie pobieranie tak dużych wiadomości, ich przetwarzanie, a następnie ich odbijanie. fetchmail ma opcję ograniczenia rozmiaru wiadomości do pobrania, ale nie mogę wymyślić, w jaki sposób wysłać wiadomość odesłaną w tym przypadku (i wiadomość pozostaje na serwerze). Czy jest jakiś sposób na załatwienie sprawy?

JeffRSon
źródło

Odpowiedzi:

2

Nie widzę problemu z używaniem set bouncemail. Zgodnie ze stroną podręcznika:

set bouncemail     Direct error mail to the sender (default)

set no bouncemail  Direct error mail to the local postmaster
                   (as per the ’postmaster’ global option above). 

Według mojego zrozumienia komentarz "Avoid loss on 4xx errors."może oznaczać:

Błędy rozpoczynające się od liczby 4są błędami tymczasowymi. Błędy 4xxnie są błędami krytycznymi i oznaczają „Mam obecnie mały problem i nie mogę przetworzyć Twojej wiadomości, powinieneś spróbować później”. Przykładem tego błędu może być 451 Temporary lookup failure. W takim przypadku serwer nadawcy (jeśli poprawnie skonfigurowany dla RFC) spróbuje dostarczyć wiadomość ponownie później. Jeśli do czasu następnej próby problem na serwerze odbierającym zostanie rozwiązany - wiadomość zostanie dostarczona. Jeśli problem będzie się powtarzał - to znowu da 451 Temporary lookup failure. Ten scenariusz będzie trwał do momentu wygaśnięcia wiadomości (jest to osobne ustawienie dla serwera poczty).

Jak to można zastosować do naszej sytuacji. Powiedzmy, że czyjś serwer nie jest poprawnie skonfigurowany i dlatego po otrzymaniu 4xxbłędu nie spróbuje później - po prostu usunie wiadomość. I wysyła ci e-mail, gdy masz tymczasowy problem z wyszukiwaniem. Twoja postfiks zwraca 451błąd. Serwer nadawcy otrzymuje 451błąd i zatrzymuje wszelkie dalsze próby jego dostarczenia (co jest NIEPRAWIDŁOWE). W tym momencie straciłeś swój list e-mail, ponieważ miałeś tymczasowy problem ORAZ z powodu niewłaściwej konfiguracji innego serwera.

Dlatego Fetchmail stara się uniknąć problemu, nie odbijając wiadomości e-mail w przypadku 4xxbłędów. Ponieważ jest już pobrany i jest już na twoim komputerze, sensowne jest zachowanie wiadomości i nie odesłanie jej z powrotem.

Po prostu włącz set bouncemaili nie martw się o nic, ponieważ większość serwerów pocztowych ma prawidłową konfigurację (zgodnie z RFC) i spróbuje ponownie dostarczyć wiadomości. Będziesz miał 1-5% szans na utratę 1 wiadomości e-mail na chwilę z niewłaściwie skonfigurowanego serwera pocztowego.

Na to:

Przy dalszym myśleniu wydaje się głupie pobieranie tak dużych wiadomości, ich przetwarzanie, a następnie ich odbijanie. fetchmail ma opcję ograniczenia rozmiaru wiadomości do pobrania, ale nie mogę wymyślić, w jaki sposób wysłać wiadomość odesłaną w tym przypadku (i wiadomość pozostaje na serwerze). Czy jest jakiś sposób na załatwienie sprawy?

Fetchmail musi pobrać wiadomość, jeśli postfix ma ją przetworzyć. Jeśli fetchmail nie pobierze wiadomości - postfix nigdy jej nie zobaczy. Wątpię, aby fetchmail poinformował o tym nadawcę. Jeśli chcesz poinformować o tym nadawcę - musisz mieć fetchmail, aby pobrać wiadomość i przekazać ją do Postfiksa.

Inna możliwa opcja - fetchmail pobiera skądś wiadomości (IMAP / POP3). Jeśli masz kontrolę nad tym kontem POP3 - ustaw tam limit, a on również będzie działał.

VL-80
źródło
Bardzo pomocny! Druga część - jasne jest, że Postfix nie może przetworzyć wiadomości, jeśli Fetchmail jej nie pobrał. Ale IMO, jeśli wiadomość jest zbyt duża, co Fetchmail wyraźnie wie, Postfix wcale nie musi działać. Fetchmail może zdecydować „Wiadomość jest za duża - zignoruj ​​ją i / lub usuń i wyślij powiadomienie”. - Niestety na serwerze nie ma ustawienia ograniczającego rozmiar. To byłoby rzeczywiście najlepsze rozwiązanie.
JeffRSon