Server SMTP in uscita leggero


46

Cosa usi come SMTP leggero solo per le e-mail in uscita?

Sto eseguendo un'app che invia e-mail tramite SMTP quando si verificano eventi di tanto in tanto e non ho bisogno di un server di posta completo.

EDIT: Sono più che felice di usare qualcosa come Postfix (e fare), se questa è la scelta migliore. Stavo pensando che potrebbe esserci qualcosa di molto più semplice, che finisce fuori dagli schemi.


Penso che sia perfettamente ragionevole attenersi a qualcosa come exim e postfix. Non sono difficili da configurare se stai facendo cose semplici.
Faheem Mitha

Qual è la tua definizione di "leggero"? Quanto ti aspetti che siano i messaggi? Quanto spesso è "una volta ogni tanto"?
Mike B,

Risposte:


22

Esistono diverse opzioni di agenti di trasferimento della posta minimi (MTA o "mail server") minimi, solo alcuni dei quali sono stati citati in altre risposte:

Affinché uno di questi funzioni, è necessario un MTA completo da qualche parte che inoltri ulteriormente i tuoi messaggi (noto come "hub di posta") ed è fortemente consigliato controllare questo hub di posta. Le cose cattive possono accadere diversamente.


esmtp non viene più mantenuto.
Nikola Kotur il

1
nullmailer ha un grave problema di conformità SMTP: riprova all'infinito quando viene visualizzato un errore permanente SMTP. Questo può costarti
telent

@telent: non utilizzare nullmailer in questo scenario.

Grazie! La guida alla configurazione di troubleshooters.com/linux/nullmailer rileva un problema di sicurezza con nullmailer: espone le password sulla riga di comando, o almeno utilizzato per farlo. Altre conversazioni notano che mstmp rende un po 'meno chiaro come accodare la posta rispetto a nullmailer.
nealmcb,

11

IMHO, il modo più semplice per farlo è con Postfix. È possibile configurarlo come un relè in uscita leggero con questi comandi:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Finché il server SMTP specificato in relayhostnon richiede autenticazione, consente di inoltrare o è una destinazione valida per l'indirizzo del destinatario, questo funzionerà.

Il myoriginparametro sarà il nome di dominio predefinito. Quindi, se invii posta a foo, andrà a foo@my.domainname.com. La posta inviata dalla barra degli utenti verrà da bar@mio.dominioname.com.

Se è necessario eseguire l'autenticazione e si desidera supportare TLS, eseguire anche i seguenti comandi:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Quindi /etc/postfix/sasl_password_mapsavere questo contenuto:

/./ username:password

Tutta la posta verrà inviata al relayhost con il nome utente e la password specificati.


Ho provato queste impostazioni e ho ricevuto un errore: "errore: tipo di dizionario non supportato: pcre"
valentt

1
Installa pcre e / o postfix-pcre e riprova.
Bahamat,

L'ho capito, anche nel frattempo, mancavano due pacchetti, il primo è postfix-pcre come hai detto, ma l'altro era strano - libsasl2-module. Sono perplesso su come sono stati installati libsasl2 e libsasl2-modules-db ma mancava libsasl2-module ... Ora finalmente tutto funziona. Potete per favore aggiungere queste informazioni cruciali alla vostra risposta?
Valentt,

1
Per tls ho anche usato: relayhost=other.mailserver.com:465allora smtp_tls_wrappermode=yese smtp_tls_security_level=encryptma sta tentando di usare l'utente locale come auth. Devo riscrivere in qualche modo l'utente di autenticazione.
tu-Reinstate Monica-dor duh,

"Fintanto che il server SMTP specificato in relayhost non richiede autenticazione" -> ok, ma raramente è così al giorno d'oggi. Il tuo suggerimento è corretto, ma per lo più irrilevante!
FarO,

9

Supponendo che tu abbia bisogno di un programma che puoi eseguire dalla shell come sendmail (8), forse MSMTP si adatta alle tue esigenze? Può connettersi a un server SMTP remoto e inviare la posta che riceve come stdin, proprio come sendmail.


Uso MSMTP per questo, funziona benissimo e la configurazione è molto semplice.
dsp

Sono così felice che tu l'abbia consigliato. Sto cercando qualcosa del genere da un po 'di tempo ormai. La configurazione di sendmail è decisamente troppo differenziata per le mie esigenze.
ixtmixilix,

4

ESMTP è un server di trasferimento della posta solo relay che può funzionare per la tua applicazione.


1
il progetto sembra morto dal 2009
SHernandez il

2

Puoi trovare sSMTP adatto alle tue esigenze. Leggi questo articolo su di esso e i suoi limiti.

Onestamente, non sarei troppo stressato per l'installazione di postfix o exim, anche se è solo per l'invio di e-mail.


1
+1 per ssmtp, -1 per il commento non necessario su sendmail, oltre a raccomandare di utilizzare un mta completo, che è molto più difficile fare bene. server di posta mal configurati e mantenuti rendono la vita di noi amministratori di posta un inferno.

@hop: non sono d'accordo su entrambi i punti. sendmail è terribile. Inoltre, ad esempio exim è il valore predefinito di Debian ed è perfettamente semplice da usare. Quindi è Postfix, probabilmente, ma non l'ho mai usato.
Faheem Mitha


1

Tecnicamente non hai bisogno di un server di posta elettronica sul tuo host, quello di cui hai bisogno (e probabilmente già lo hai) è un client smtp (o MUA) che può connettersi al tuo server SMTP aziendale (che potrebbe essere ovunque tu possa connetterti .)

A seconda dell'app (e del linguaggio di programmazione in cui è stata scritta) ci sono molti modi in cui l'app può connettersi al "SMTP Server" sulla rete.

Di solito, con PHP o Python, c'è un file di configurazione con l'app per specificare il server "SMTP" (che può trovarsi sul tuo host o altrove sulla tua rete.) Se hai già un server di posta sulla rete, allora punta semplicemente il configurazione a quel server.

Se non esistono altre opzioni, l'app può generare il messaggio di posta elettronica nell'output standard che è possibile elaborare con qualcosa del tipo:

listoftargets = "me@example.com jab@example.com" echo "Contenuto del test" | mail -s "Test Subject" $ listoftargets

Su alcuni sistemi, esiste già un mailserver minimo per l'invio.

Sam T.


Ho un sacco di server nel cloud e volevo davvero che ognuno avesse i propri server SMTP in uscita, piuttosto che fare affidamento su qualcosa di esterno. In questo modo, se il mio server SMTP remoto è inattivo, non ha effetto su tutti i server.
FlappySocks

1) se lasci che PHP o Python facciano la parte smtp, devi fare tutto il lavoro (accodamento, gestione degli errori) che un MTA gestirà. 2) alla fine contraddici ciò che dici all'inizio

Alcune applicazioni linux sono impostate in modo da aspettarsi mailo sendmaildenominabili eseguibili. Notifiche di sistema. È questo il punto, no? Per qualsiasi altra cosa non ci sono vincoli.
Craig Hicks,
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.