Вопрос: Как обеспечить, чтобы адрес отправителя был «logged-in-user@example.org» в Postfix?


Я установил сервер 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». Есть ли более простой вариант?


12
2017-10-04 14:13


Источник




Ответы:


Вам нужно pcre regex, скомпилированное в Postfix. Или в дистрибутив уже включен pcre. postconf -m должен показать линию с pcre в этом. И тогда вы можете сделать:

/etc/postfix/login_maps.pcre:

/^(.*)@example.org$/   ${1}

В main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

Должно работать нормально, как ожидалось. Если не сообщите мне, чтобы я редактировал его, когда это было необходимо.


13
2017-10-04 17:36



Это потрясающе. Именно то, что я искал! - Chris Lercher
Для пользователей Ubuntu вы можете получить postfix pcre с помощью sudo apt-get install postfix-pcre, Возможно, это было очевидно для большинства. - NeilMonday
Невозможно опустить домен в регулярном выражении или ссылку $myhostname переменная ?. Вот вы можете видеть, что Postfix способен искать таблицу поиска пользовательской частью письма ... - Jaime Hablutzel
Я считаю, что вы захотите сбрасывать обратную косую черту. символ в доменном имени, поэтому он интерпретируется как буквальное совпадение: /^(.*)@example\.org$/ - Arnon
В противном случае это соответствует «test @ exampleXorg», а также «test@example.org», что может не быть точно намеченным поведением. - Arnon


Регулярное выражение, указанное в другом ответе, соответствует пользовательской части адреса электронной почты (вошедшие в-пользователя@ 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

5
2017-08-02 00:32





Можете ли вы использовать комбинацию регулярного выражения в заголовке, как показано здесь: http://www.akadia.com/services/postfix_uce.html? Затем вы можете комбинировать с регулярным выражением, например [*@example.org], чтобы обеспечить только отправителя с example.org.


0
2017-10-04 14:38



Предположим, я могу использовать «regexp:» здесь (?) Как я могу указать регулярное выражение такое, что пользователь «a» может отправлять как «a@example.org», но не как «b@example.org»? - Chris Lercher
@sonstabo было бы неплохо, если бы вы включили образец конфигурации - Jaime Hablutzel