Як примусити адресу відправника бути "logged-in-user@example.org" у Postfix?


15

Я встановив сервер 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". Чи є простіший варіант?

Відповіді:


14

По-перше, перевірте, чи підтримує ваша програма 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

Це має добре працювати.


Це прекрасно. Саме те, що я шукав!
Кріс Лерчер

3
Для користувачів Ubuntu ви можете отримати pcre Postfix за допомогою sudo apt-get install postfix-pcre. Можливо, це було очевидно для більшості.
NeilMonday

Немає можливості опустити домен у регулярній вимірній чи довідковій $myhostnameзмінній ?. Тут ви бачите, що Postfix здатний шукати таблицю пошуку за частиною користувача електронної пошти ...
Jaime Hablutzel

Я вірю, що вам захочеться відхилити відхилення від "." символу в доменному імені, тому його інтерпретують як буквальне відповідність: /^(.*)@example\.org$/
Арнон

В іншому випадку це відповідає "test @ exampleXorg", а також "test@example.org", що може бути не точно призначеною поведінкою.
Арнон

6

Регекс, згаданий в іншій відповіді, відповідає користувацькій частині адреси електронної пошти ( зареєстрований користувач @ example.org). Ось додаткова інформація.

Щоб використовувати повну адресу електронної пошти як ім'я користувача, використовуйте такий регекс (наприклад, у /etc/postfix/login_map):

/^(.*)$/   ${1}

Це означає, що у вашому імені користувача завжди є повна адреса електронної пошти ( logged-in-user@example.org ) - жодне інше ім'я користувача не може надсилати з цієї адреси - і вам не доведеться оновлювати додатковий конфігураційний файл Postfix щоразу, коли ви додати користувача.

Це може бути використане на сервері, на якому налаштовано кілька доменів. Користувач john.doe@example.com може надсилати лише з цієї адреси, але не з john.doe@example.org (різний користувач та електронна пошта, інша особа). Ім’я користувача john.doe було б неоднозначним у цьому випадку.

Також, залежно від конфігурації, параметр 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

0

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


Припустимо, я можу використати "regexp:" тут (?) Як я можу вказати такою, що користувач "a" може надіслати як "a@example.org", але не як "b@example.org"?
Кріс Лерчер

@sonstabo було б добре, якщо ви включите зразок конфігурації
Jaime Hablutzel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.