Comment envoyer des e-mails avec mon serveur CentOS?


21

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. De plus, ce serait bien de pouvoir envoyer des e-mails via des applications PHP que je lance / développe également sur le serveur. Ou même être en mesure pour le serveur d'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" "myaddress@gmail.com" < /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 monmaillog

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)

Des indices?


1
As-tu essayé? Quel genre de problèmes voyez-vous?
Ignacio Vazquez-Abrams

Je ne sais pas trop ce que je cherche. Je recherche sur Google et je vois des tutoriels pour configurer un serveur de messagerie Linux. C'est ça que je veux?
Jake Wilson

Je viens de remarquer que cela est resté sans réponse. Par curiosité, l'avez-vous compris? Avez-vous vérifié si la machine était répertoriée sur PBL? spamhaus.org/pbl
Belmin Fernandez

Je ne l'ai pas fait fonctionner. Je n'ai pas encore parcouru le processus d'installation de sendmail, car les affiches ci-dessous impliquent qu'il ne devrait pas être nécessaire d'envoyer simplement un seul e-mail. Je ne peux pas imaginer que mon petit serveur domestique soit répertorié sur une liste de spam car je n'en ai jamais envoyé d'e-mail auparavant.
Jake Wilson

J'ai même essayé la commande simple que j'ai énumérée ci-dessus en envoyant à un compte de messagerie 10minutemail.com avec le même résultat et le même message de journal
Jake Wilson

Réponses:


13

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

essayez la commande ci-dessus :)


1
+1 Vous n'avez pas besoin d'un serveur de messagerie sur le système pour envoyer du courrier, tout comme vous n'avez pas besoin d'un serveur de messagerie sur votre bureau pour envoyer du courrier. Le programme de messagerie est très bien.
dunxd

1
J'ai essayé cette commande et cela n'a pas fonctionné. Aucune erreur ou quoi que ce soit. Tout simplement aucun courrier n'apparaissant dans ma boîte de réception Gmail. Regardez ci-dessus ce que dit mon maillog
Jake Wilson

Alors ... une raison pour laquelle cela ne fonctionne pas pour moi? Quel journal dois-je consulter pour déterminer pourquoi je ne reçois aucun courrier?
Jake Wilson

6

Réponse simple:

Configurez 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 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 sa configuration pour qu'il reçoive réellement les messages dans les boîtes aux lettres des utilisateurs est un défi.


3

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.

Il doit s'agir d'une configuration avec mon FAI, car je n'ai pas de pare-feu configurable de mon côté ici.


2

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 mail@example.com Objet:
  2. Test e-mail de demoslice.com Test
  3. corps de l'e-mail.
  4. .

N ° 4 - il n'y a qu'un arrêt complet 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 de 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.


Ceci est une réponse brillante - courte et fonctionne.
monkjack

1

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


1
Le contenu de /etc/mail.rc: set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path ViaQue proposez-vous que je fasse?
Jake Wilson

0

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


0

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 réception 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

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 sur le port 25, etc.

J'habille généralement le script perl sendEmail 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:
#
#    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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.