Почта: пользовательское сообщение об отказе для определенных адресов электронной почты

Вопрос или проблема

Я хотел бы отклонить письма на определенный адрес с пользовательским сообщением. Письма на другие несуществующие адреса должны оставаться без изменений. Как я могу это сделать? Я использую Postfix 2.7.0 на Ubuntu 10.4.

Предыстория: Мои веб-сайты отправляют письма моим пользователям, и пока что мой личный адрес используется в качестве отправителя. Я бы хотел изменить его на noreply@… адрес, но так как пользователи часто отвечают на эти письма, я бы хотел отправить им полезное сообщение об отказе.

Спасибо!

Создайте карту custom_replies (например, /etc/postfix/custom_replies) со следующим содержимым:

[email protected] REJECT Like I said, NOREPLY

Выполните sudo postmap /etc/postfix/custom_replies.

Отредактируйте /etc/postfix/main.cf и добавьте следующее в качестве первой проверки smtpd_recipient_restrictions:

check_recipient_access hash:/etc/postfix/custom_replies,

Затем выполните sudo postfix reload.

Попробуйте отправить электронное письмо на [email protected]:

$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mydomain.com ESMTP Postfix (Ubuntu)
HELO localhost
250 mydomain.com
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
554 5.7.1 <[email protected]>: Recipient address rejected: Like I said, NOREPLY
quit
221 2.0.0 Bye

В дополнение к ответу @ΤΖΩΤΖΙΟΥ, если вам нужно проверить конкретное условие, а затем вернуть пользовательское сообщение, вы можете создать smtpd_restriction_classes, которые указывают действие, которое вы хотите выполнить после того, как условие было проверено.

Использование: Предоставить пользовательское сообщение об отказе для заблокированных аккаунтов

Как уже упоминалось, создайте файл с пользовательским сообщением (например, /etc/postfix/custom_message) с универсальным регулярным выражением:

/.*/ REJECT Sorry, your account has been suspended

Отредактируйте файл /etc/postfix/main.cf и добавьте следующую строку перед любыми строками ограничений (например, smtpd_recipient_restrictions):

smtpd_restriction_classes = reject_suspended_accounts_with_custom_msg
reject_suspended_accounts_with_custom_msg = regexp:/etc/postfix/custom_message

В файле карты, где вы выбираете заблокированные виртуальные почтовые ящики (например, /etc/postfix/suspended-map.cf), добавьте следующий запрос (пример для MySQL, если есть столбец account_has_been_suspended для идентификации таких аккаунтов):

...
query = SELECT 'reject_suspended_accounts_with_custom_msg' FROM virtual_users WHERE email_address="%s" AND account_has_been_suspended=1

Наконец, в соответствующем параметре ограничения (либо smtpd_sender_restrictions, либо smtpd_recipient_restrictions) добавьте проверку:

smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/suspended-map.cf

Таким образом, виртуальный почтовый ящик, который был помечен как “заблокированный” в базе данных, получит пользовательское сообщение об отказе.

Ответ или решение

Настройка пользовательского сообщения об отказе для определенных адресов электронной почты в Postfix

Если вы хотите настроить пользовательское сообщение об отказе для конкретного адреса электронной почты в Postfix, при этом оставив стандартные сообщения для других несуществующих адресов, следуйте инструкциям ниже. Рассмотрим решение для версии Postfix 2.7.0 на Ubuntu 10.4. Это поможет избежать недоразумений при использовании noreply-адреса, если пользователи часто отвечают на автоматические сообщения.

Шаг 1: Создание файла с пользовательскими сообщениями

Создайте файл /etc/postfix/custom_replies и добавьте следующее содержимое:

[email protected] REJECT На это сообщение отвечать не надо

Задача этого файла — определить индивидуальное сообщение об отказе для адреса noreply@вашдомен.com.

Шаг 2: Генерация хеш-таблицы

После создания файла выполните команду, чтобы создать хеш-таблицу:

sudo postmap /etc/postfix/custom_replies

Эта команда создаст бинарный файл, который Postfix может использовать для быстрого поиска.

Шаг 3: Настройка main.cf

Откройте файл конфигурации Postfix /etc/postfix/main.cf и добавьте следующий параметр как первый в списке ограничений smtpd_recipient_restrictions:

check_recipient_access hash:/etc/postfix/custom_replies,

Этот параметр указывает Postfix проверять получателей на наличие в файле custom_replies.

Шаг 4: Перезапуск Postfix

После внесения изменений необходимо перезагрузить Postfix, чтобы новые настройки вступили в силу:

sudo postfix reload

Демонстрация работы

Теперь, когда кто-то пытается отправить письмо на [email protected], он получит сообщение "На это сообщение отвечать не надо" вместо стандартного сообщения об ошибке. Например, испытайте это с помощью telnet:

$ telnet localhost 25
HELO localhost
MAIL FROM: <[email protected]>
RCPT TO: <[email protected]>

При попытке отправить письмо на указанный адрес, Postfix вернет:

554 5.7.1 <[email protected]>: Recipient address rejected: На это сообщение отвечать не надо

Заключение

Данная настройка позволяет вам информировать пользователей о том, что на это письмо не надо отвечать. Если же вам потребуется больше условий, например, проверка учетных записей на приостановку, можно создать smtpd_restriction_classes с дополнительными условиями, используя подобные подходы.

Эта настройка обеспечивает удобство для пользователей и предотвращает недоразумения с noreply адресами. Убедитесь, что все изменения вносятся административным пользователем и что ваш Postfix настроен правильно для работы с необходимыми файлами и конфигурациями.

Оцените материал
Добавить комментарий

Капча загружается...