Я установил сервер Postfix с SMTP AUTH (STARTTLS на порту 587). Все мои пользователи находятся в домене example.org. Я хочу, чтобы адрес отправителя был «logged-in-user@example.org».
Я узнал, что этого можно добиться с помощью параметров main.cf
smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps
с файлом login_maps, например:
a@example.org a
b@example.org b
c@example.org c
...
(смотрите также Блокировать подделку адреса отправителя с помощью SMPT AUTH), но это будет означать, что мне придется редактировать файл login_maps каждый раз, когда у меня появляется новый пользователь. Мне не нужно такое гибкое отображение: оно всегда должно быть «logged-in-user@example.org». Есть вариант попроще?
Сначала проверьте, поддерживает ли ваша установка Postfix pcre, введя команду postconf -m
и ищу линию с pcre
в этом. Убедившись, что у вас есть поддержка pcre, вы можете сделать следующее:
/etc/postfix/login_maps.pcre
:
/^(.*)@example\.org$/ ${1}
В main.cf
:
smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre
Это должно работать нормально.
Регулярное выражение, упомянутое в другом ответе, соответствует пользовательской части адреса электронной почты (вошедший в систему пользователь@ example.org). Вот дополнительная информация.
Чтобы использовать полный адрес электронной почты в качестве имени пользователя, используйте следующее регулярное выражение (например, в /etc/postfix/login_map
):
/^(.*)$/ ${1}
Это означает, что ваше имя пользователя всегда является вашим полным адресом электронной почты (logged-in-user@example.org) - никакое другое существующее имя пользователя не может отправлять с этого адреса - и вам не нужно обновлять дополнительный файл конфигурации Postfix каждый раз, когда вы добавляете пользователя.
Это может быть использовано на сервере, на котором настроено несколько доменов. Пользователь john.doe@example.com можно отправлять только с этого адреса, но не с john.doe@example.org (другой пользователь и адрес электронной почты, другой человек). Имя пользователя Джон Доу было бы неоднозначно в этом случае.
Кроме того, в зависимости от вашей конфигурации, параметр smtpd_sender_login_maps, который должен указывать на этот файл, может находиться в master.cf (вместо main.cf). Официальный В документации Dovecot есть следующий пример (если вы используете SASL / представление):
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
В этом примере параметр должен быть настроен так, чтобы указывать на правильный файл и использовать регулярное выражение или (лучше) pcre в качестве типа. Особенно, если файл с именем "виртуальный" уже используется для другой цели (например, для virtual_alias_maps, как показано в официальном примере Postfix), для сопоставления входа в систему следует использовать другой файл.
Из:
smtpd_sender_login_maps=hash:/etc/postfix/virtual
Кому:
smtpd_sender_login_maps=pcre:/etc/postfix/login_map
Можете ли вы использовать комбинацию регулярных выражений в заголовке, как показано здесь: http://www.akadia.com/services/postfix_uce.html? Затем вы можете комбинировать с регулярным выражением, например [*@example.org], чтобы гарантировать, что отправитель только с example.org.