Вопрос или проблема
После примерно 30 часов попыток пробить головой стену я пришел к выводу, что лучше обратиться к людям, которые, возможно, лучше разбираются в этой теме.
У меня есть сервер Digitalocean на Ubuntu 22.
Да, я знаю, что Digitalocean не поддерживает отправку писем и тому подобное, но я только использую postfix как простой relay-сервер, и ничего больше.
По сути, я использую Amazon SES в данный момент, чтобы отправить письмо, например, на: “[email protected]“. У меня есть несколько доменов, которые нужно обрабатывать, и все конфигурации (DNS) этих доменов правильно настроены и указывают на сервер. Ранее это работало с Brevo, но, вероятно, у меня была ошибка в конфигурации, так как аккаунт был случайно приостановлен из-за нарушения условий использования, без объяснения причин, просто с извинением “извините, ваш аккаунт приостановлен”.
Я подозреваю, что передавал адреса в поле “От:” напрямую от отправителей, и они подумали, что кто-то завладел аккаунтом или что-то в этом роде, что вполне возможно.
Так или иначе… Теперь, когда я описал основную настройку и обстоятельства. Проблема в том, что у меня есть настроенный фильтр, который абсолютно необходим для работы, и кажется, что при создании пользовательской службы content_filter в master.cf:
shell_content_filter unix - n n - - pipe
flags=Rq user=filteruser argv=/usr/local/bin/minimal_filter.sh
Это часть журнала, где мы можем увидеть проблему:
"relay=shell_content_filter, delay=0.04, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (delivered via shell_content_filter service"
И в main.cf:
content_filter = shell_content_filter
receive_override_options = no_address_mappings
Да, “filteruser” создан, и да, он работает правильно, все разрешения правильно установлены, и проверены, всё функционирует нормально, но мой фильтр распознается как relay, и буквально говорит, что почта доставляется через внешнюю службу, что для меня не имеет никакого смысла.
Не уверен, достаточно ли этой информации, я был бы очень признателен, если бы кто-то знал, что происходит, потому что у меня большие проблемы, письма теряются, их невозможно восстановить, и я всё ещё не могу заставить это работать.
Ответ или решение
Конечно, вы столкнулись с серьезной проблемой, связанной с настройкой Postfix на вашем сервере DigitalOcean с Ubuntu 22, и я постараюсь разъяснить ситуацию, чтобы помочь вам справиться с ней.
Анализ проблемы
Ваш сервер настроен в качестве простого релейного сервера Postfix для отправки электронной почты через Amazon SES. Несмотря на то, что DigitalOcean не поддерживает отправку электронной почты, ваше намерение использовать его как релейный сервер вполне законно. Однако возникли сложности с фильтрацией контента, и ваша фильтрация распознается как реле, что приводит к потере писем.
Структура настройки
-
Настройка
content_filter
:- В файле
master.cf
вы добавили настройку shell_content_filter, которая выглядит следующим образом:shell_content_filter unix - n n - - pipe flags=Rq user=filteruser argv=/usr/local/bin/minimal_filter.sh
- В
main.cf
параметры следующие:content_filter = shell_content_filter receive_override_options = no_address_mappings
- В файле
-
Поведение системы:
- Лог сообщает о доставке почты через shell_content_filter с параметрами
relay=shell_content_filter
, что указывает, что фильтрация контента принимает почту как релей, и она считается доставленной через внешнюю службу.
- Лог сообщает о доставке почты через shell_content_filter с параметрами
Предложения по решениям
-
Проверьте конфигурацию скрипта:
- Убедитесь, что
minimal_filter.sh
после обработки возвращает код выхода 0, чтобы Postfix мог продолжать обработку письма без маркировки его как доставленного.
- Убедитесь, что
-
Правильная маршрутизация:
- Настройте фильтр так, чтобы он не только обрабатывал, но и перенаправлял входящие сообщения на локальный Postfix для нормальной доставки. Это может потребовать доработки скрипта для правильного перенаправления сообщений.
-
Параметры логирования:
- Увеличьте уровень логирования Postfix для лучшей диагностики, используя следующее в
main.cf
:debug_peer_list = 127.0.0.1
- Это позволит отследить этапы работы фильтрации более детально.
- Увеличьте уровень логирования Postfix для лучшей диагностики, используя следующее в
-
Резервные копии и тестирование:
- Всегда проверяйте ваши изменения на тестовой среде перед внедрением в рабочую среду, чтобы избежать потери данных.
Заключение
При должной настройке и тестировании, вы сможете добиться стабильной работы фильтрации контента на вашем сервере Postfix. Если возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться на ресурсы технической поддержки или специализирующиеся форумы.