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

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

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

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

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

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

1 ответ

Решение

Я не вижу никаких проблем с использованием 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, чтобы загрузить сообщение и передать его в postfix.

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

Другие вопросы по тегам