Come imporre che l'indirizzo del mittente sia "logg-in-user@example.org" in Postfix?


15

Ho installato un server Postfix con SMTP AUTH (STARTTLS sulla porta 587). Tutti i miei utenti sono nel dominio "esempio.org". Voglio imporre che l'indirizzo del mittente sia "logg-in-user@example.org".

Ho imparato che questo può essere ottenuto con le opzioni main.cf

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

con un file login_maps come:

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

(vedi anche Bloccare lo spoofing dell'indirizzo del mittente con SMPT AUTH ), ma ciò significherebbe che dovrò modificare il file login_maps ogni volta che avrò un nuovo utente. Non ho bisogno di una mappatura così flessibile: dovrebbe sempre essere "logg-in-user@example.org". C'è un'opzione più semplice?

Risposte:


14

Innanzitutto, controlla se la tua installazione di Postfix supporta pcre digitando il comando postconf -me cercando una linea con pcreesso. Dopo aver verificato di disporre del supporto per pcre, è possibile effettuare le seguenti operazioni:

/etc/postfix/login_maps.pcre:

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

In main.cf:

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

Questo dovrebbe funzionare bene.


Questo è perfetto. Esattamente quello che stavo cercando!
Chris Lercher,

3
Per gli utenti Ubuntu, è possibile ottenere Postfix PCRE con sudo apt-get install postfix-pcre. Forse questo era ovvio per la maggior parte.
NeilMonday,

Non c'è modo di omettere il dominio nella regex o nella $myhostnamevariabile di riferimento ?. Qui puoi vedere che Postfix è in grado di cercare la tabella di ricerca da parte dell'utente nell'email ...
Jaime Hablutzel

Credo che vorrai backslash-escape il '.' personaggio nel nome di dominio, quindi viene interpretato come una corrispondenza letterale: /^(.*)@example\.org$/
Arnon

Altrimenti, questo corrisponde a "test @ exampleXorg" e "test@example.org", che potrebbe non essere esattamente il comportamento previsto.
Arnon,

6

La regex menzionata nell'altra risposta corrisponde alla parte utente dell'indirizzo e-mail ( accesso-utente @ esempio.org). Ecco alcune informazioni aggiuntive.

Per utilizzare l'indirizzo e-mail completo come nome utente, utilizzare la seguente regex (ad esempio in /etc/postfix/login_map):

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

Ciò significa che il tuo nome utente è sempre il tuo indirizzo e-mail completo ( accesso-utente@esempio.org ) - nessun altro nome utente esistente è autorizzato a inviare da quell'indirizzo - e non devi aggiornare un file di configurazione Postfix aggiuntivo ogni volta che aggiungi un utente.

Potrebbe essere utilizzato su un server in cui sono configurati più domini. L'utente john.doe@example.com può inviare solo da quell'indirizzo, ma non da john.doe@example.org (utente e e-mail diversi, persona diversa). Il nome utente john.doe sarebbe ambiguo in questo caso.

Inoltre, a seconda della configurazione, l'impostazione smtpd_sender_login_maps, che deve puntare a questo file, potrebbe trovarsi in master.cf (anziché in main.cf). La documentazione ufficiale Dovecot ha il seguente esempio (se si utilizza SASL / invio):

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

In questo esempio, l'impostazione dovrebbe essere regolata per puntare al file giusto e usare regex o (meglio) pcre come tipo. Soprattutto se un file chiamato "virtuale" è già utilizzato per un altro scopo (ad esempio per virtual_alias_maps, come mostrato in un esempio Postfix ufficiale ), un altro file dovrebbe essere usato per il mapping di login.

A partire dal:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

Per:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

Puoi usare la combinazione di regexp sull'intestazione come mostrato qui: http://www.akadia.com/services/postfix_uce.html ? Quindi puoi combinare con regexp come [*@example.org] per garantire solo il mittente da example.org.


Supponiamo che io possa usare "regexp:" qui (?) Come posso specificare regexp tale, che l'utente "a" può inviare come "a@example.org" ma non come "b@example.org"?
Chris Lercher,

@sonstabo sarebbe bello se includessi l'esempio di configurazione
Jaime Hablutzel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.