Exim: cambia l'indirizzo del mittente quando invii messaggi dalla rete locale


8

Abbiamo una configurazione exim funzionante in un sito, in cui gli utenti possono inviare e ricevere mail. Stiamo cercando di configurare un server per inviare alcuni avvisi ed errori utilizzando la posta elettronica a un indirizzo esterno alla rete locale.

Il problema è:

Il programma che invia i messaggi li invia utilizzando il nome utente con cui viene eseguito e il nome host locale del server. Questo fa sì che le mail abbiano un mittente di formato: myapp@myserver.mydomain. Exim invia queste e-mail al server SMTP dell'ISP, che le rifiuta in quanto hanno un mittente illegale o non verificabile (l'indirizzo interno).

Sto pensando che dovrei configurare exim per riscrivere il mittente quando:

  • il dominio del mittente si trova sulla rete locale
  • il dominio del destinatario è esterno alla rete locale

Ho provato a impostare una sorta di riscrittura nella configurazione exim, ma non sono riuscito a farlo funzionare. Mostrerei quello che ho provato, ma sono rimasto a corto di tempo durante l'ultima visita al sito e ho dovuto tornare alla versione originale perdendo tutte le modifiche che ho provato.

Risposte:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

Le bandiere hanno i seguenti significati:

  1. S: esegue tutte le riscritture al momento SMTP. Ciò significa che tutti i seguenti flag vengono eseguiti immediatamente quando arrivano i dati a cui si applicano, non ritardati fino a dopo.
  2. F - Riscrive la busta dal campo.
  3. f - Riscrivi il campo di intestazione Da :.
  4. r - Riscrivi il campo di intestazione Rispondi a:.
  5. s - Riscrivi il campo di intestazione Mittente-A :.

Leggi il capitolo 31 delle specifiche Exim per maggiori dettagli sulla riscrittura dei messaggi


1
È così che l'ho fatto funzionare, tranne: Deve esserci un ^inizio della regola, poiché Sesclude una regexp
Esa Varemo,

1
s dovrebbe essere " Sender:" header not " Sender-To:" (Ed è una modifica troppo piccola per modificare il post)
Gert van den Berg,

11

Il file /etc/email-addressesdovrebbe gestire il problema. Questa è una parte standard della distribuzione Exim. Sarà necessario configurare un record per ciascun utente locale che invia e-mail.

Prova una linea che ti /etc/email-addressespiace:

 myapp:   donotreply@example.com

Sul tuo server MX aggiungi un alias come:

 donotreply:    :blackhole:

Utilizzare Reply-to:un'intestazione per consentire al destinatario di rispondere al messaggio.

Il file /etc/email-addressesviene utilizzato il seguente codice di riscrittura, che dovrebbe trovarsi all'inizio della rewritesezione del file di configurazione.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addressesnon esiste sul mio server. Posso semplicemente crearlo o indica che manca qualcosa?
Esa Varemo,

@EsaVaremo Grep per il tuo file di configurazione email-addresseso controlla il tuo file di configurazione per la sezione di riscrittura. È possibile che questo non sia stato configurato nella tua distribuzione.
BillThor,

Ho provato grep, locatee ho guardato per un paio di man-Pagine, ma non ho trovato nulla. Il file deve essere definito in exim.conf?
Esa Varemo,

@EsaVaremo La riga alla fine della mia risposta dovrebbe essere nella sezione di riscrittura di exim.conf. Se manca, aggiungilo. Assicurati che la variabile local_domainsincluda il tuo dominio.
BillThor,

Ho notato la tua modifica poco dopo aver fatto il mio ultimo commento. Per qualsiasi motivo, però, non riuscivo a farlo funzionare, quindi sono andato con l'altra risposta, poiché ero a corto di tempo. Non ho dubbi sul fatto che sia giusto, ho
probabilmente sbagliato a digitare

1

/etc/email-addressesè utile quando è necessario associare un solo indirizzo e-mail per nome utente. Tuttavia, se il tuo utente deve inviare e-mail con più indirizzi, dovrai modificarlo /etc/email-addressesogni volta e inevitabilmente finirai per utilizzare l'indirizzo sbagliato.

Un altro approccio è quello di inviare l'e-mail usando il exim4comando e la sua -fopzione:

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

Si noti che affinché l' -fopzione funzioni, è necessario che l'utente sia negli utenti fidati di exim o exim per accettarlo come mittente non attendibile autorizzato.

Nel mio caso quest'ultimo era predefinito, grazie a questo carattere jolly in /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

L'altra soluzione consiste nell'aggiungere la seguente riga /etc/exim4/conf.d/main/00_local_settings(presupponendo la configurazione divisa di exim e crearla se non esiste già):

MAIN_TRUSTED_USERS = yourusername

Entrambe le opzioni richiedono un ricaricamento della configurazione di exim. Sotto Debian:

# dpkg-reconfigure exim4-config
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.