fetchmail / postfix - сбросить сообщение, если оно слишком большое

1741
JeffRSon

У меня есть почтовый сервер Ubuntu, который получает почту от провайдера через fetchmail и доставляет ее через amavis и postfix.

Postfix имеет ограничение размера около 20 МБ. Почты, размер которых больше этого, удаляются с сервера, но до сих пор молча удалялись, потому что в / etc / fetchmailrc не было определения для postmaster, и в нем содержалось «set no bouncemail».

Я хотел бы сообщить отправителю об отклоненной почте. Но комментарий к «set no bouncemail» («Избегать потерь при ошибках 4xx») заставляет меня думать, что было бы опасно или неразумно менять его на «set bouncemail». Как следует понимать этот комментарий?

Есть ли способ настроить это сообщение? Похоже, что он исходит из «Почты» и содержит несколько локальных данных, которые кажутся бесполезными для отправителя слишком большого сообщения.

При дальнейшем размышлении кажется глупым загружать такие большие сообщения, обрабатывать и затем отбрасывать их. У fetchmail есть возможность ограничить размер загружаемых сообщений, но я не могу понять, как в этом случае отправить сообщение об отказе (и сообщение остается на сервере). Есть ли способ сделать трюк?

1

1 ответ на вопрос

2
VL-80

Я не вижу никаких проблем для использования 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ошибку и останавливает любые дальнейшие попытки доставить ее (что НЕПРАВИЛЬНО). В этот момент вы потеряли свое электронное письмо из-за временной проблемы И из-за неправильной настройки другого сервера.

Таким образом, fetchmail пытается избежать этой проблемы, не возвращая электронную почту в случае 4xxошибок. Поскольку оно уже загружено и уже установлено на вашем компьютере, имеет смысл просто сохранить сообщение и не отправлять его обратно.

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

На этом:

При дальнейшем размышлении кажется глупым загружать такие большие сообщения, обрабатывать и затем отбрасывать их. У fetchmail есть возможность ограничить размер загружаемых сообщений, но я не могу понять, как в этом случае отправить сообщение об отказе (и сообщение остается на сервере). Есть ли способ сделать трюк?

Fetchmail должен загрузить сообщение, если вы хотите, чтобы postfix обработал сообщение. Если fetchmail не загрузит сообщение - postfix никогда его не увидит. Я сомневаюсь, что fetchmail сообщит об этом отправителю. Если вы хотите сообщить об этом отправителю - вам нужно иметь fetchmail, чтобы загрузить сообщение и передать его в постфикс.

Другой возможный вариант - fetchmail загружает сообщения откуда-то (IMAP / POP3). Если у вас есть контроль над этой учетной записью POP3 - установите лимит там, и он также будет работать.

Очень полезно! Во второй части - ясно, что Postfix не может обработать сообщение, если Fetchmail не загрузил его. Но IMO, если сообщение слишком большое, что ясно знает Fetchmail, Postfix вообще не нужно запускать. Fetchmail может решить: «Сообщение слишком большое - игнорируйте его и / или удалите и отправьте уведомление». - К сожалению, на сервере нет настроек для ограничения размера. Это было бы действительно лучшим решением. JeffRSon 10 лет назад 0

Похожие вопросы