Postfix'te gönderen adresinin “log-in-user@example.org” olması nasıl zorlanır?


15

SMTP AUTH (587 numaralı bağlantı noktasında STARTTLS) içeren bir Postfix sunucusu ayarladım. Tüm kullanıcılarım "example.org" etki alanında. Gönderen adresinin "log-in-user@example.org" olmasını zorunlu kılmak istiyorum.

Bunun main.cf seçenekleriyle elde edilebileceğini öğrendim

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

aşağıdaki gibi bir login_maps dosyasıyla:

a@example.org a
b@example.org b
c@example.org c
...

(ayrıca bkz. SMPT AUTH ile gönderen adres sahteciliğini engelleme ), ancak bu, yeni bir kullanıcı bulduğumda login_maps dosyasını düzenlemek zorunda kalacağım anlamına gelir. Böyle esnek bir haritalamaya ihtiyacım yok: Her zaman "log-in-user@example.org" olmalıdır. Daha kolay bir seçenek var mı?

Yanıtlar:


14

İlk olarak, komutu girip içinde postconf -mbir satır arayarak Postfix kurulumunuzun pcre'yi destekleyip desteklemediğini kontrol edin pcre. PCRE desteğine sahip olduğunuzu doğruladıktan sonra, aşağıdakileri yapabilirsiniz:

/etc/postfix/login_maps.pcre:

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

İçinde main.cf:

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

Bu iyi olmalı.


Bu harika. Tam aradığım şey!
Chris Lercher

3
Ubuntu kullanıcıları için postfix pcre ile birlikte alabilirsiniz sudo apt-get install postfix-pcre. Belki bu çoğu için açıktı.
NeilMonday

Normal ifade veya başvuru $myhostnamedeğişkenindeki alan adını atlamanın bir yolu yok mu ?. Burada Postfix'in e-postanın kullanıcı kısmına göre arama tablosunda arama yapabildiğini görebilirsiniz ...
Jaime Hablutzel

Sanırım 'tersine' ters eğik çizgiden kaçmak isteyeceksiniz. alan adında bir gerçek eşleme olarak yorumlanır: /^(.*)@example\.org$/
Arnon

Aksi takdirde, bu tam olarak amaçlanan davranış olmayabilir "test @ exampleXorg" ve "test@example.org" ile eşleşir.
Arnon

6

Diğer cevapta belirtilen normal ifade, e-posta adresinin kullanıcı kısmıyla eşleşir (user -user @ example.org). İşte bazı ek bilgiler.

Tam e-posta adresini kullanıcı adı olarak kullanmak için aşağıdaki normal ifadeyi kullanın (örneğin içinde /etc/postfix/login_map):

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

Bu, kullanıcı adınızın her zaman tam e-posta adresiniz olduğu anlamına gelir ( log-in-user@example.org ) - bu adresten başka bir kullanıcı adının gönderilmesine izin verilmez - ve her seferinde ek bir Postfix yapılandırma dosyasını güncellemeniz gerekmez kullanıcı ekleyin.

Bu, birden çok etki alanı yapılandırılmış bir sunucuda kullanılabilir. John.doe@example.com kullanıcısının yalnızca bu adresten göndermesine izin verilir, ancak john.doe@example.org adresinden (farklı kullanıcı ve e-posta, farklı kişi) gönderim yapmasına izin verilmez . Bu durumda john.doe kullanıcı adı belirsiz olacaktır.

Ayrıca, yapılandırmanıza bağlı olarak, bu dosyayı işaret etmesi gereken smtpd_sender_login_maps ayarı master.cf dosyasında (main.cf yerine) olabilir. Resmi Dovecot belgelerinde aşağıdaki örnek vardır (SASL / gönderim kullanıyorsanız):

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

Bu örnekte, ayar doğru dosyayı gösterecek ve tür olarak normal ifade veya (daha iyi) pcre kullanacak şekilde ayarlanmalıdır. Özellikle "sanal" adlı bir dosya zaten başka bir amaç için kullanılıyorsa (örneğin resmi bir Postfix örneğinde gösterildiği gibi virtual_alias_maps için), oturum açma eşlemesi için başka bir dosya kullanılmalıdır.

Gönderen:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

Kime:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

Aşağıda gösterildiği gibi başlıkta normal ifade kombinasyonunu kullanabilirsiniz: http://www.akadia.com/services/postfix_uce.html ? Ardından yalnızca example.org'dan gönderen sağlamak için [*@example.org] gibi regexp ile birleştirebilirsiniz.


Diyelim ki burada "regexp:" kullanabilirim (?) Normal ifadeyi nasıl belirtebilirim ki "a" kullanıcısı "b@example.org" olarak değil "a@example.org" olarak gönderebilir mi?
Chris Lercher

@sontabo Yapılandırma örneğini dahil etmeniz iyi olur
Jaime Hablutzel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.