Come inviare e-mail con il mio server CentOS?


21

Ho appena creato un modesto server di casa usando CentOS 5.5. Voglio che il server sia in grado di inviare e-mail al mio account Gmail o ad altri account e-mail per varie cose come cron job. Inoltre sarebbe bello poter inviare e-mail tramite applicazioni PHP che eseguo / sviluppo anche sul server. O anche essere in grado per il server di inviare e-mail tramite il comando di posta.

So che ci sono milioni di risultati di ricerca di Google sull'impostazione del tuo server Linux come server di posta elettronica o sulla configurazione di sendmail ecc. Ma non sembrano essere quello che sto cercando ... almeno non la penso così. Non sto cercando di configurare alcuni server aziendali a cui altri client possano connettersi per inviare e-mail o cose così complicate.

Voglio solo che il mio server mi invii e-mail su cose. Sembra che dovrebbe essere semplice ... Qualcuno può indicarmi la giusta direzione?

AGGIORNARE

Per una richiesta degli utenti di seguito, ho provato questo comando:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

Nessun errore o altro. Ma l'e-mail non è mai stata visualizzata nella mia casella di posta. Ecco il miomaillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Qualche indizio?


1
Hai provato? Che tipo di problemi stai vedendo?
Ignacio Vazquez-Abrams,

Non sono sicuro di cosa sto cercando. Cerco su Google e vedo tutorial per configurare un server di posta Linux. È quello che voglio?
Jake Wilson,

Ho appena notato che era ancora senza risposta. Per curiosità, l'hai capito? Hai controllato se la macchina era elencata su PBL? spamhaus.org/pbl
Belmin Fernandez,

Non l'ho fatto funzionare. Non ho ancora completato il processo di installazione di sendmail, perché i poster sottostanti implicano che non dovrebbe essere richiesto semplicemente di inviare una singola e-mail. Non riesco a immaginare che il mio piccolo server di casa sia elencato in un elenco di spam in quanto non ho mai nemmeno inviato un'e-mail da esso prima.
Jake Wilson,

Ho anche provato il semplice comando che ho elencato sopra inviando a un account di posta elettronica 10minutemail.com con lo stesso risultato e lo stesso messaggio di registro
Jake Wilson,

Risposte:


13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

prova sopra il comando :)


1
+1 Non è necessario un server di posta sul sistema per inviare la posta, così come non è necessario un server di posta sul desktop per inviare la posta. Il programma di posta elettronica va bene.
Dunxd,

1
Ho provato questo comando e non ha funzionato. Nessun errore o altro. Solo la posta non appare nella mia posta in arrivo di Gmail. Guardate sopra a ciò che dice il mio maillog
Jake Wilson

Quindi ... qualche motivo per cui questo non funziona per me? Quale registro dovrei guardare per determinare perché non ricevo posta?
Jake Wilson,

6

Risposta semplice:

Configura sendmail . Dipenderà dalla tua distribuzione, ma questo non è affatto difficile. Se hai domande specifiche, chiedi pure.

Risposta complicata:

Se stai chiedendo questo, probabilmente non dovrebbe solo saltare la pistola e la configurazione sendmail justtt ancora.

Dovrai prendere in considerazione alcune cose:

  1. Il tuo ISP ti consente di inviare e-mail? Potresti trovarti su un intervallo IP non server e, pertanto, molti provider di posta elettronica bloccheranno completamente la tua attività.

  2. Quale indirizzo utilizzerai come indirizzo di provenienza? Sei autorizzato a inviare da questo indirizzo (SPF, DomainKeys, ecc.)? In caso contrario, i tuoi messaggi potrebbero essere rilevati come spam dai provider di posta elettronica --- e giustamente.

  3. Ultimo, ma certamente non meno importante: hai davvero bisogno di usare il tuo servizio SMTP? Qual è il motivo per cui usare il tuo ISP non è abbastanza buono?

Ai giorni nostri, la configurazione di un server SMTP non era un grosso problema. Al giorno d'oggi, l'installazione può essere più semplice, ma configurarla in modo da ricevere effettivamente i messaggi nelle caselle di posta delle persone , è una sfida.


3

Posso confermare che nessuno dei suggerimenti di cui sopra sta funzionando sul mio sistema CentOS a casa, nemmeno uno. È fastidioso!

Quindi ho provato lo stesso su una nuova istanza di Amazon con CentOS 6.4 e, anche con la configurazione predefinita, posso inviare la posta senza problemi. Tutto quello che dovevo fare era

yum install mailx

dopo di che l'invio di posta come descritto sopra funziona come un incantesimo. Installare complicazioni come sendmail NON è necessario per quello che Jakub sta cercando di fare.

Deve essere una configurazione con il mio ISP, dato che qui non ho un firewall configurabile.


2

Devi fare quanto segue:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. Modificare mydestination = mydomain.com, localhost.mydomain.com, localhost

    a

    mydestination = localhost.mydomain.com, localhost

Test utilizzando quanto segue dalla riga di comando

  1. mail address@example.com Oggetto:
  2. Prova l'e-mail da demoslice.com Test
  3. corpo dell'email.
  4. .

N. 4: c'è solo un punto per completare il corpo dell'e-mail. Ora dovresti avere la posta.

Quanto sopra ti fornirà un MTA (Mail Transfer Agent) funzionante. Alcune risorse che ti aiuteranno con una configurazione più avanzata sono disponibili negli articoli di slicehost sulla configurazione della posta elettronica per CentOS (scorri verso il basso fino alla sezione CentOS e Email). Dovresti davvero considerare di impostare correttamente quanto segue: nome host, record RDNS (DNS inverso) e SPF (Sender Policy Framework) con il tuo provider DNS.


Questa è una risposta brillante - breve e funziona.
monkjack,

1

Hai modificato il tuo /etc/mail.rc per impostare l'indirizzo smtp?


1
Il contenuto di /etc/mail.rcè set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path ViaCosa stai suggerendo di fare?
Jake Wilson,

0

Prova a installare postfix e imposta mydestination nel file di configurazione anche se dovrebbe funzionare con sendmail.


0

Postfix è sulla buona strada, ma a meno che Gmail non pensi di essere almeno lontanamente legittimo (ad esempio, non sei uno spammer) ricevere la posta è abbastanza improbabile.

Il processo è un po 'complicato da pubblicare qui, ma il modo più semplice che ho trovato per raggiungere questo obiettivo (e far consegnare la tua posta) è configurare Postfix come inoltro, usando il tuo account Gmail come mezzo di trasporto.

Il processo che utilizzo è dettagliato qui:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Non è necessario impostare certificati autofirmati (come per sendmail) e nella mia esperienza, funziona e basta!


0

La soluzione semplice non è sendmail, ma sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Uno script perl che è facilmente configurabile per l'invio tramite qualsiasi server SMTP a cui puoi arrivare: lo uso per inviare continuamente account Gmail, ma funziona anche per un normale SMTP su TCP sulla porta 25, ecc.

Di solito avvolgo lo script perl sendEmail con il mio script shell per Gmail:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
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.