Posso configurare la posta di sistema per utilizzare un server SMTP esterno?


72

È possibile impostare la posta di sistema su un box Linux da inviare tramite un altro server SMTP - magari anche con autenticazione? In tal caso, come posso fare?

Se ciò non è chiaro, facciamo un esempio. Se sono alla riga di comando e digitare:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

è possibile che venga inviato tramite un server SMTP esterno, come G-mail?

Non sto cercando "un modo per inviare posta da Gmail dalla riga di comando", ma piuttosto un'opzione per configurare l'intero sistema in modo da utilizzare un server SMTP specifico, o possibilmente un account su un server SMTP (forse sovrascrivendo l'indirizzo del mittente) .


In effetti, è il modo in cui la maggior parte delle macchine era installata. Hai in mente qualche particolare MTA? In caso contrario (questo include "cos'è un MTA?"), Quale distribuzione stai eseguendo?
Gilles 'SO- smetti di essere malvagio' il

Sono su Ubuntu 10.04, ho trovato questo articolo sulla configurazione di ssmtp, sembra che funzioni. puoi approfondire come sono installate la maggior parte delle macchine?
Cwd

Risposte:


71

Ho trovato sSMTP molto semplice da usare.

Nei sistemi basati su Debian:

apt-get install ssmtp

Quindi modificare il file di configurazione in /etc/ssmtp/ssmtp.conf

Una configurazione di esempio per utilizzare Gmail per l'invio di e-mail:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Nota : assicurarsi che il comando "mail" sia presente nel sistema. Il pacchetto mailutils dovrebbe fornire questo nei sistemi basati su Debian.

Aggiornamento : ci sono persone (e segnalazioni di bug per diverse distribuzioni Linux) che segnalano che sSMTP non accetterà password con un carattere 'spazio' o '#'. Se sSMTP non funziona per te, questo potrebbe essere il caso.


2
come nota per gli altri potrebbe essere necessario installare ssmtp e quindi mailutils. penso che mailutils configuri il comando di posta elettronica e i collegamenti simbolici a ssmtp in modo da poter usare la mailsintassi normale :)
cwd

1
@cwd Appena testato su Ubuntu 13.04. Non ho dovuto installare il mailutilspacchetto (e non è installato automaticamente). ssmtplavorato fuori dagli schemi.
Pijusn,

L'ho usato con successo in Debian su un BeagleBone Black e prima ho dovuto installare mailutils.
Dave Nelson,

Su Kubuntu 14.04, ha dovuto installare mailutils dopo ssmtp. Tuttavia ha funzionato al primo tentativo.
MariusMatutiae,

6
ssmtp NON verifica il certificato SSL / TLS del server remoto sulle attuali versioni debian, ubuntu e redhat e NON verifica il nome host del certificato. Questo è un grosso problema, in quanto ciò rende inutilmente inutile la crittografia e la tua password viene trasmessa allo stesso modo in testo normale e chiunque può annusarla. ssmtp non ha avuto uno sviluppo attivo da almeno nel 2009. Quindi, se ti preoccupi della sicurezza dell'account e-mail che usi per i tuoi server e-mail in uscita, NON usare ssmtp, ma postfix (o qualcos'altro) invece: unix.stackexchange.com/ a / 118101/72087
Zulakis,

23

Per postfix :

  • Aggiungi l'IP per il tuo relay di posta esterno /etc/hostse aggiungi un alias mailrelay ad esso.
  • Modifica la configurazione postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • modificare /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Converti in formato hash

postmap /etc/postfix/smtp_auth

Non c'è bisogno di dire che solo root dovrebbe essere in grado di leggere questo ... chmod u=r,og=-


10

mailx supporta l'impostazione del server smtp sulla CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Non è necessario installare nulla, a condizione che il server smtp ti consenta di inviare posta non autenticata.

Non esiste una risposta che imposta il server smtp per tutti i bit di software che potresti avere sulla tua scatola Linux. Ogni client di posta elettronica può configurare un server SMTP.


Assicurati di mettere -S var=val davanti al tuo destinatario.
Benoit Duffez,

Cosa fare se non è consentita la posta non autenticata? Il client non è stato autenticato per l'invio di posta anonima durante MAIL,
Mian Asbat Ahmad,


7

Il mio preferito è il client di posta elettronica ( github ). È davvero semplice, non è necessaria alcuna configurazione complessa, non sono necessarie dipendenze. E puoi specificare l'argomento smtp-server tramite riga di comando, il che significa che è più adatto per gli script. L'unico peccato è che la maggior parte delle distribuzioni di Linux non contiene questo strumento, quindi è necessario compilarlo da soli.

Citazioni dal progetto e-mail su github

D: Cos'è l'email?

A: 'email' è un programma che ho progettato che invierà e-mail tramite la riga di comando a server smtp remoti o utilizzerà 'sendmail' internamente e interagirà completamente con GNUPG per crittografare e firmare le tue e-mail, così decidi di farlo. .. Puoi ottenere GNUPG su: http://www.gnupg.org

Grazie a cygwin per avermi fatto conoscere questo utile client di posta elettronica.

Compila e installa

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Opzioni della riga di comando di e-mail

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Utilizzo del campione

Posta semplice con il server SMTP specificato

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

Posta HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Allegato (s)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

Configurare un server SMTP exim locale seguendo le istruzioni in questa pagina, ma selezionare l'opzione "posta inviata da smarthost; nessuna posta locale" dalla prima schermata della configurazione di Exim. Ciò imposterà un server SMTP sulla tua scatola che può ricevere posta dai comandi "mail" o "mailx" e inoltrerà tutti i messaggi allo smarthost (un server Gmail nel tuo caso) per la consegna.

Per inviare e-mail in uscita tramite un server Gmail dovrai impostare il supporto TLS per Exim , che non è banale. Questo Howto fornisce alcune spiegazioni ed ecco un link con ulteriori spiegazioni specifiche di Gmail. Dovresti concederti diverse ore per farlo funzionare. Suggerirei di iniziare inviando e-mail dalla tua casella a un server SMTP abilitato TLS a cui hai accesso root in modo da poter eseguire il debug della configurazione TLS Exim da entrambi i lati prima di provare a inviare tramite un server Gmail. Poiché la comunicazione è crittografata, non sarà possibile utilizzare strumenti come tcpdump per analizzare il protocollo sulla linea.


1

Se disponi di connettività server smtp esterna con il tuo host, puoi configurare smtp sul tuo host e inviare e-mail.

La configurazione di Smtp in passi di Linux è disponibile qui: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Esempi di comandi e-mail sono disponibili qui: http://kerneltalks.com/commands/examples-send-email-through-terminal/


Le risposte dovrebbero includere dettagli sufficienti per stare da sole. Avere collegamenti con informazioni più complete va bene, ma almeno una parte del materiale collegato dovrebbe essere citata nella risposta in modo che possa essere utile dopo l'
inserimento del
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.