1

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

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

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

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

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

1 ответ1

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

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

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

На этом:

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .