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