Сервер в кармане, или просто о сложном!

главная - Статьи - Почта - Postfix + Dovecot + MySQL



Postfix белый список

Дата обновления: 16.09.2020

Теги: Postfix Почтовый сервер

В нормальной ситуации postfix должен проверять корректность передаваемых ему данных, таких как адрес получателя и отправителя, IP-адрес и соответсвие ему имени хоста и множество других проверок. Но в жизни часто бывает, что приходит письма от конкретного домена не проходят проверку (например криво настроены PTR-записи). В таких случаях надо сделать исключение, например, разрешив конкретному отправителю присылать письма, несмотря на плохо настроенный почтовик. Под адресом отправителя почти всегда имеется ввиду IP-адрес/hostname почтового сервера отправителя.

Создаем файл с белым списком отправителей:

# touch /etc/postfix/trusted_senders

1.2.3.4	OK
5.6.7.8	OK
sender.mail-server.org OK

Создаем индексированную базу данных для postfix:

# postmap /etc/postfix/trusted_senders

Будет создан файл базы /etc/postfix/trusted_senders.db.

Выясним, какой тип базы postfix использует:

# postconf | grep database_type
default_database_type = hash

Соответственно, секцию конфига postfix (например, в smtpd_client_restrictions) изменяем примерно так:

smtpd_client_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        check_client_access hash:/etc/postfix/trusted_senders,
        reject_unknown_reverse_client_hostname,
        reject_unknown_client_hostname,
        reject_unauth_destination,
        permit

# service postfix restart

Здесь есть нюанс. Postfix делает несколько проверок:

1) smtpd_client_restrictions – IP-адрес и (если возможно) доменное имя клиентского компьютера (или другого почт.сервера), который соединяется с сервером postfix для отправки письма. Если на этом этапе reject, то до команд HELO/EHLO дело не дойдет вообще.
2) smtpd_helo_restrictions – имя компьютера и (если возможно) его IP-адрес по имени, переданному в команде HELO/EHLO hostname. Тут тоже не все просто. Клиент может просто не отправлять данные HELO/EHLO и пройдет проверку. Решается включением smtpd_helo_required = yes.
3) smtpd_etrn_restrictions – то же, что и для 1), 2)
4) smtpd_sender_restrictions – проверка отправителя (т.е. проверяется, кто пытается отправить письмо на наш сервер) на основе данных из MAIL FROM:<sender>
5) smtpd_relay_restrictions - если на основе данных RCPT TO принимается решение о пересылке письма, то здесь проверяется, от кого и кому можно пересылать, нет ли ошибок в адресе и пр.
6) smtpd_recipient_restrictions – проверка адреса получателя, указанного в команде RCPT TO:. Можно ему получить, нельзя, правильно ли вообще указан адрес и др.
7) smtpd_data_restrictions
8) smtpd_end_of_data_restrictions

и на этих этапах, в зависимости от того, что вам нужно, надо добавить:
check_client_access hash:/etc/postfix/trusted_senders



Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?