fetchmail / postfix - повідомлення відмов, якщо воно занадто велике


1

У мене є поштовий сервер Ubuntu, який отримує пошту від ISP за допомогою fetchmail та доставляє її через amavis та postfix.

Postfix має обмеження розміру близько 20 Мб. Електронні листи, розміри яких перевищують цей, видаляються з сервера, але дотепер вони мовчки видалялися, оскільки / etc / fetchmailrc не мав визначення для поштового майстра і містив "set no bouncemail".

Я хочу повідомити відправника про відхилену пошту. Але коментар до "set no bouncemail" ("Уникайте втрат на 4xx помилках") змушує мене думати, що це може бути небезпечно або нерозумно змінювати його на "set bouncemail". Як слід розуміти цей коментар?

Чи є спосіб налаштувати повідомлення відмов? Схоже, він походить від "Пошти" і містить пару локальної інформації, яка видається непотрібною для відправника занадто великого повідомлення.

При подальшому роздумі здається, що нерозумно завантажувати такі великі повідомлення, обробляти їх, а потім відскакувати. У fetchmail є можливість обмежити розмір повідомлень, які потрібно завантажити, але я не можу зрозуміти, як надіслати повідомлення відмов у цьому випадку (і повідомлення залишається на сервері). Чи є якийсь спосіб зробити трюк?

Відповіді:


2

Я не бачу жодної проблеми в користуванні set bouncemail. Відповідно до сторінки керівництва:

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

З мого розуміння коментар "Avoid loss on 4xx errors."може означати наступне:

Помилки, що починаються з числа, 4є тимчасовими помилками. Помилки 4xxне є фатальними помилками і означають "У мене зараз невелика проблема, і я не можу обробити ваше повідомлення. Спробуйте пізніше". Прикладом цієї помилки був би 451 Temporary lookup failure. У цьому випадку сервер-відправник (якщо його правильно налаштовано на RFC) спробує знову надіслати повідомлення пізніше. Якщо до наступної спроби проблема на отриманні сервера буде вирішена - повідомлення буде доставлено. Якщо проблема не зникає - знову це дасть 451 Temporary lookup failure. Цей сценарій триватиме до тих пір, поки не закінчиться повідомлення (що є окремим параметром для поштового сервера).

Тепер, як це можна застосувати до нашої ситуації. Скажімо, чийсь сервер не налаштований належним чином, і, таким чином, при отриманні 4xxпомилки він не спробує пізніше - він просто видалить повідомлення. І він надсилає вам електронну пошту, поки у вас є проблеми з тимчасовим пошуком. Тож ваш поштовий рефікс повертає 451помилку. Сервер відправника отримує 451помилку і зупиняє будь-які подальші спроби її доставки (що WRONG). У цей момент ви втратили лист електронної пошти, оскільки у вас виникли тимчасові проблеми ТА через неправильну конфігурацію іншого сервера.

Отже, fetchmail намагається уникнути проблеми, не відштовхуючись електронною поштою у разі 4xxпомилок. Оскільки воно вже завантажено, і воно вже є на вашому комп’ютері, має сенс просто зберігати повідомлення, а не надсилати його назад.

Просто ввімкніть set bouncemailі не турбуйтеся ні про що, оскільки більшість поштових серверів мають належну конфігурацію (за RFC), і вони спробують доставити повідомлення ще раз. У вас буде 1–5% шансів втратити 1 електронну пошту через час від неправильно налаштованого поштового сервера.

На цьому:

При подальшому роздумі здається, що нерозумно завантажувати такі великі повідомлення, обробляти їх, а потім відскакувати. У fetchmail є можливість обмежити розмір повідомлень, які потрібно завантажити, але я не можу зрозуміти, як надіслати повідомлення відмов у цьому випадку (і повідомлення залишається на сервері). Чи є якийсь спосіб зробити трюк?

Fetchmail повинен завантажити повідомлення, якщо ви хочете, щоб поштовий індекс обробив його. Якщо fetchmail не завантажить повідомлення - постфікс ніколи його не побачить. Сумніваюся, fetchmail повідомить відправника про це. Якщо ви хочете повідомити про це відправника - вам потрібно мати fetchmail, щоб завантажити повідомлення та надіслати його на поштовий індекс.

Ще один можливий варіант - fetchmail завантажує повідомлення звідкись (IMAP / POP3). Якщо у вас є контроль над цим обліковим записом POP3 - встановіть там ліміт, і він також працюватиме.


Дуже корисний! У другій частині - зрозуміло, що Postfix не може обробити повідомлення, якщо Fetchmail не завантажив його. Але IMO, якщо повідомлення занадто велике, що Fetchmail чітко знає, Postfix не потрібно запускати взагалі. Fetchmail може вирішити "Повідомлення занадто велике - проігноруйте його та / або видаліть та надішліть сповіщення". - На жаль, на сервері немає налаштувань для обмеження розміру. Це було б найкращим рішенням.
JeffRSon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.