web-dev-qa-db-fra.com

Puis-je configurer la messagerie système pour utiliser un serveur SMTP externe?

Est-il possible de configurer la messagerie système sur une boîte Linux pour être envoyée via un autre serveur smtp - peut-être même avec authentification? Si oui, comment dois-je procéder?

Si ce n'est pas clair, donnons un exemple. Si je suis sur la ligne de commande et saisissez:

cat body.txt | mail -s "just a test" [email protected]

est-il possible de l'envoyer via un serveur SMTP externe, comme G-mail?

Je ne cherche pas "un moyen d'envoyer du courrier à partir de gmail à partir de la ligne de commande" mais plutôt une option pour configurer l'ensemble du système pour utiliser un serveur SMTP spécifique, ou éventuellement un compte sur un serveur SMTP (peut-être en remplaçant l'adresse d'expéditeur) .

78
cwd

J'ai trouvé sSMTP très simple à utiliser.

Dans les systèmes basés sur Debian:

apt-get install ssmtp

Modifiez ensuite le fichier de configuration dans /etc/ssmtp/ssmtp.conf

Un exemple de configuration pour utiliser votre gmail pour envoyer des e-mails:

# root is the person who gets all mail for userids < 1000
[email protected]

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

Note: Assurez-vous que la commande "mail" est présente dans votre système. Le paquet mailutils devrait fournir celui-ci dans les systèmes basés sur Debian.

pdate: Il y a des gens (et des rapports de bogues pour différentes distributions Linux) signalant que sSMTP n'acceptera pas les mots de passe avec un caractère 'espace' ou '#'. Si sSMTP ne fonctionne pas pour vous, cela peut être le cas.

72
Vangelis Tasoulas

Pour suffixe:

  • Ajoutez l'adresse IP de votre relais de messagerie externe à /etc/hosts et ajoutez un alias mailrelay.
  • Modifiez la configuration de postfix:

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

    mailrelay login:password
    
  • Convertir en format de hachage

postmap /etc/postfix/smtp_auth

Inutile de dire que seul root devrait pouvoir lire ceci ... chmod u=r,og=-

24
Nils

mailx prend en charge la configuration du serveur smtp sur la CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v [email protected]

Rien ne doit être installé, à condition que votre serveur smtp vous permette d'envoyer du courrier non authentifié.

Il n'y a pas de réponse unique qui définit le serveur smtp pour tous les bits de logiciel que vous pourriez avoir sur votre boîte Linux. Chaque client de messagerie peut configurer un serveur SMTP.

13
teknopaul

Mon préféré est le client email ( github ). C'est vraiment simple, aucune configuration complexe n'est requise, aucune dépendance n'est requise. Et vous pouvez spécifier l'argument smtp-server via la ligne de commande, ce qui signifie qu'il convient mieux aux scripts. Le seul dommage est que la plupart des distributions Linux ne contiennent pas cet outil, vous devez donc le compiler vous-même.

Citations de projet de messagerie sur github

Q: Qu'est-ce que le "courrier électronique"?

R: 'e-mail' est un programme que j'ai conçu qui enverra des e-mails via la ligne de commande aux serveurs smtp distants ou utilisera 'sendmail' en interne, et interagira pleinement avec GNUPG pour crypter et signer vos e-mails, vous décidez donc de le faire. .. Vous pouvez obtenir GNUPG à: http://www.gnupg.org

Merci cygwin pour m'avoir fait connaître ce client utile email .

Compiler et installer

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

Options de ligne de commande du courrier électronique

$ 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

Exemple d'utilisation

Courrier simple avec serveur SMTP spécifié

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr [email protected] -smtp-server smtp.domain.com -smtp-port 25 [email protected] [email protected]

Courrier HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]

Pièce (s) jointe (s)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
7
LiuYan 刘研

Configurez un serveur SMTP exim local en suivant les instructions sur la page this , mais choisissez l'option "courrier envoyé par smarthost; pas de courrier local" dans l'écran premier de l'écran Exim configuration. Cela mettra en place un serveur SMTP sur votre boîte qui peut recevoir du courrier des commandes "mail" ou "mailx" et transmettra tous les messages au smarthost (un serveur Gmail dans votre cas) pour livraison.

Pour envoyer des e-mails sortants via un serveur Gmail, vous devrez configurer prise en charge TLS pour Exim , ce qui n'est pas anodin. Ce Howto donne quelques explications et voici un lien avec des explications supplémentaires spécifiques à Gmail. Vous devez vous accorder plusieurs heures pour que cela fonctionne. Je suggérerais de commencer par envoyer des e-mails de votre boîte à un serveur SMTP compatible TLS auquel vous avez un accès root afin que vous puissiez déboguer votre configuration Exim TLS des deux côtés avant d'essayer d'envoyer via un serveur Gmail. Puisque la communication est cryptée, vous ne pourrez pas utiliser d'outils comme tcpdump pour analyser le protocole sur la ligne.

2
Eli Rosencruft

Si vous avez une connectivité de serveur smtp externe avec votre hôte, vous pouvez configurer smtp sur votre hôte et envoyer des e-mails.

La configuration Smtp dans les étapes Linux peut être trouvée ici: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Des exemples de commandes par e-mail peuvent être trouvés ici: http://kerneltalks.com/commands/examples-send-email-through-terminal/

1
Shrikant

Configuration de Postfix

Exigence: ces 4 paquets sont nécessaires postfix mailx cyrus-sasl-plugin ca-certificates pour CentOS sinon mailutils libsasl2-modules ca-certificates. De plus, si vous utilisez gmail, authentification en 2 étapes et mot de passe d'application sont requis/préférés pour que cela fonctionne correctement.

Exemple avec google gmail et cryptage tls, éditer/ajouter les fichiers listés comme décrit ci-dessous

Étape 1:

/etc/postfix/sasl_passwd

[smtp.gmail.com]:587 [email protected]:apppassword

Étape 2:

exécutez ce qui suit pour convertir le fichier texte en une table de recherche, et effectuez une protection minimale des fichiers

postmap /etc/postfix/sasl_passwd
chown root. /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
chown root. /etc/postfix/sasl_passwd.db
chmod 600 /etc/postfix/sasl_passwd.db

Étape 3:

/etc/aliases (liste des utilisateurs qui pourraient utiliser le service, le mettre à jour si nécessaire)

postmaster: root
nobody: root
hostmaster: root
webmaster: root
www: root

Étape 4:

exécutez newaliases pour appliquer les modifications précédentes

Étape 5:

/etc/postfix/virtual

root email@you_want_it_to_receive_sent_mail.com

Étape 6:

appliquer les modifications précédentes en exécutant

postmap /etc/postfix/virtual

Étape 7:

/etc/postfix/main.cf ajoutez/modifiez-le et assurez-vous qu'il n'y a pas de doublon, définissez également la bonne valeur sur smtp_tls_CAfile en fonction de l'emplacement de votre fichier (fourni par ca-certificates paquet)

inet_protocols = ipv4
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
tls_append_default_CA = no
smtp_sasl_auth_enable = yes
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/ca-bundle.pem
#smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
mydestination =
relay_clientcerts = 
smtp_sasl_security_options =
tls_random_source = dev:/dev/urandom
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
virtual_alias_maps = hash:/etc/postfix/virtual

Étape 8:

redémarrer le service

systemctl restart postfix

Étape 9:

tester le système

echo "This is a test Email" | mail -s "Testing" root

Étape 10:

vérifier les journaux

less /var/log/mail.log

Sources: pour plus de détails sur la configuration, vérifiez ceci article mais notez que la configuration est différente

0
intika