web-dev-qa-db-fra.com

Comment envoyer des e-mails avec mon serveur CentOS?

Je viens de construire un modeste serveur domestique en utilisant CentOS 5.5. Je veux que le serveur puisse envoyer des e-mails à mon compte Gmail ou à d'autres comptes de messagerie pour diverses choses comme les tâches cron. Il serait également agréable de pouvoir envoyer des e-mails via PHP applications que j'exécute/développe également sur le serveur. Ou même que le serveur puisse envoyer des e-mails via la commande mail.

Je sais qu'il y a un million de résultats de recherche Google sur la configuration de votre serveur Linux en tant que serveur de messagerie ou la configuration de sendmail, etc. Mais ils ne semblent pas être ce que je recherche ... du moins, je ne le pense pas. Je n'essaie pas de configurer un serveur d'entreprise auquel d'autres clients peuvent se connecter pour envoyer des e-mails ou quelque chose de compliqué comme ça.

Je veux juste que mon serveur m'envoie des e-mails sur des trucs. On dirait que ça devrait être simple ... Quelqu'un peut-il m'orienter dans la bonne direction?

MISE À JOUR

Par une demande d'utilisateurs ci-dessous, j'ai essayé cette commande:

/bin/mail -s "My Subject" "[email protected]" < /home/john/test

Aucune erreur ou quoi que ce soit. Mais l'e-mail n'est jamais apparu dans ma boîte de réception. Voici mon maillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<[email protected]>, size=11209, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: [email protected], 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)

Des indices?

21
Jake Wilson

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

essayez la commande ci-dessus :)

13
Rajat

Réponse simple:

Configurer sendmail . Cela dépendra de votre distribution mais ce n'est pas difficile du tout. Si vous avez des questions spécifiques, posez-les.

Réponse compliquée:

Si vous posez cette question, vous ne devriez probablement pas simplement sauter le pistolet et configurer sendmail justtt pour l'instant.

Vous devrez prendre quelques éléments en considération:

  1. Votre FAI vous autorise-t-il à envoyer des e-mails? Vous êtes peut-être sur une plage IP non-serveur et, par conséquent, de nombreux fournisseurs de messagerie bloquent votre accès.

  2. Quelle adresse utiliserez-vous comme adresse de départ? Êtes-vous autorisé à envoyer à partir de cette adresse (SPF, DomainKeys, etc.)? Sinon, vos messages pourraient être détectés comme spam par les fournisseurs de messagerie --- et à juste titre.

  3. Dernier point, mais non le moindre: avez-vous vraiment besoin d'utiliser votre propre service SMTP? Une raison pour laquelle l'utilisation de vos FAI n'est pas suffisante?

À l'époque, la configuration d'un serveur SMTP n'était pas un gros problème. De nos jours, la configuration peut être plus facile, mais la configurer de manière à ce qu'elle envoie les messages aux boîtes aux lettres des personnes , est un défi.

6
Belmin Fernandez

Je peux confirmer qu'aucune des suggestions ci-dessus ne fonctionne non plus sur mon système CentOS à la maison - pas une seule. Ce qui est ennuyeux!

Ensuite, j'ai essayé la même chose sur une nouvelle instance Amazon exécutant CentOS 6.4, et même avec la configuration par défaut, je peux envoyer des messages sans problème. Tout ce que j'avais à faire était

yum install mailx

après quoi l'envoi de courrier comme décrit ci-dessus fonctionne comme un charme. L'installation de complications comme sendmail n'est PAS nécessaire pour ce que Jakub essaie de faire.

Ce doit être une configuration avec mon FAI, car je n'ai pas de pare-feu configurable de mon côté ici.

3
Jay Versluis

Vous devez effectuer les opérations suivantes:

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

    à

    mydestination = localhost.mydomain.com, localhost

Testez à l'aide des éléments suivants à partir de la ligne de commande

  1. adresse [email protected] Objet:
  2. Test e-mail de demoslice.com Test
  3. corps de l'e-mail.
  4. .

N ° 4 - il y a juste un point final pour compléter le corps de l'e-mail. Vous devriez maintenant avoir du courrier.

Ce qui précède vous donnera un MTA (Mail Transfer Agent) fonctionnel. Certaines ressources qui vous aideront avec une configuration plus avancée peuvent être trouvées dans les articles slicehost sur la configuration de la messagerie pour CentOS (faites défiler la page jusqu'à la section CentOS et e-mail). Vous devriez vraiment envisager de définir correctement les éléments suivants: nom d'hôte, enregistrements RDNS (DNS inversé) et SPF (Sender Policy Framework) avec votre fournisseur DNS.

2
seanl

Avez-vous modifié votre /etc/mail.rc pour définir l'adresse smtp?

1
PiNoYBoY82

Postfix est sur la bonne voie, mais à moins que gmail ne pense que vous êtes au moins légitime à distance (par exemple, vous n'êtes pas un spammeur), la livraison de votre courrier est peu probable.

Le processus est un peu compliqué à publier ici, mais le moyen le plus simple que j'ai trouvé pour y parvenir (et faire livrer votre courrier) est de configurer postfix comme relais, en utilisant votre propre compte gmail comme transport.

Le processus que j'utilise est détaillé ici:

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

Aucune configuration de certificats auto-signés n'est nécessaire (selon sendmail) et d'après mon expérience, cela fonctionne!

0
GeoSword

Essayez d'installer postfix et définissez mydestination dans le fichier de configuration, même si cela devrait fonctionner avec sendmail.

0
Caterpillar

La solution simple n'est pas sendmail, mais sendEmail:

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

Un script Perl qui est facilement configuré pour envoyer via n'importe quel serveur SMTP auquel vous pouvez accéder - Je l'utilise pour envoyer via des comptes Gmail tout le temps, mais il fonctionne également pour SMTP ordinaire sur TCP on port 25, etc.

J'encapsule généralement le script sendEmail Perl avec mon propre script Shell pour 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:
#
#    [email protected]
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "[email protected]" < 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 "[email protected]" >> $1
                echo "pwd=my-password" >> $1
                echo "A Shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
0
Stabledog