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

72

Est-il possible de configurer le courrier système sur une boîte Linux pour qu'il soit envoyé via un autre serveur smtp - peut-être même avec une authentification? Si oui, comment puis-je faire cela?

Si ce n'est pas clair, donnons un exemple. Si je suis en ligne de commande et tapez:

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

Est-il possible que ce soit envoyé 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 permettant de configurer l'ensemble du système pour utiliser un serveur SMTP spécifique, ou éventuellement un compte sur un serveur SMTP (en remplaçant éventuellement l'adresse de départ). .

cwd
la source
C'est la manière dont la plupart des machines étaient installées, en fait. Avez-vous un MTA en tête? Si non (cela inclut «qu'est-ce qu'un MTA?»), Quelle distribution exécutez-vous?
Gilles 'SO- arrête d'être méchant'
Je suis sur Ubuntu 10.04, cet article sur la configuration de ssmtp semble fonctionner. Pouvez-vous préciser la configuration de la plupart des machines?
cwd

Réponses:

71

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

Dans les systèmes basés sur Debian:

apt-get install ssmtp

Puis éditez le fichier de configuration dans /etc/ssmtp/ssmtp.conf

Un exemple de configuration pour utiliser votre Gmail pour l'envoi d'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

Remarque : 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.

Mise à jour : des personnes (et des rapports de bogues pour différentes distributions Linux) ont signalé que sSMTP n'accepterait pas les mots de passe comportant un caractère 'espace' ou '#'. Si sSMTP ne fonctionne pas pour vous, cela peut être le cas.

Vangelis Tasoulas
la source
2
en guise de note aux autres, vous devrez peut-être installer ssmtp, puis mailutils. Je pense que mailutils configure la commande mail et les liens symboliques vers ssmtp afin que vous puissiez utiliser la mailsyntaxe standard :)
cwd
1
@cwd Vient de tester Ubuntu 13.04. Je n'ai pas eu à installer de mailutilspaquet (et ce n'est pas installé automatiquement). ssmtptravaillé hors de la boîte.
Pijusn
Je viens de l'utiliser avec succès dans Debian sur un BeagleBone Black et je devais d'abord installer mailutils.
Dave Nelson
Sur Kubuntu 14.04, il a fallu installer mailutils après ssmtp. Cependant, cela a fonctionné au premier essai.
MariusMatutiae
6
ssmtp NE vérifie PAS le certificat SSL / TLS du serveur distant sur les versions actuelles de Debian, Ubuntu et RedHat et NE vérifie PAS non plus le nom d'hôte du certificat. Ceci est un problème majeur, car cela rend effectivement le cryptage inutile et votre mot de passe est transmis de la même manière à un texte en clair et tout le monde peut le renifler. ssmtp n'a pas eu de développement actif depuis au moins 2009. Donc, si vous vous souciez de la sécurité du compte de messagerie que vous utilisez pour vos emails sortants, n'utilisez PAS ssmtp, mais postfix (ou quelque chose d'autre): unix.stackexchange.com/ a / 118101/72087
Zulakis
23

Pour postfix :

  • Ajoutez l'adresse IP de votre relais de messagerie externe à /etc/hostset ajoutez-y un alias mailrelay.
  • Modifier 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
    
  • Modifier /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Convertir au format hash

postmap /etc/postfix/smtp_auth

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

Nils
la source
10

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 permet d'envoyer un courrier non authentifié.

Il n'y a pas de réponse unique qui configure le serveur smtp pour tous les logiciels que vous pourriez avoir sur votre machine Linux. Chaque client de messagerie peut configurer un serveur SMTP.

teknopaul
la source
Assurez-vous de mettre -S var=val avant votre destinataire.
Benoit Duffez
Que faire si le courrier non authentifié n'est pas autorisé? Je suis le client n'a pas été authentifié pour envoyer du courrier anonyme pendant le courrier,
Mian Asbat Ahmad
7

Mon préféré est le client de messagerie ( github ). C'est très simple, aucune configuration complexe n'est nécessaire, aucune dépendance n'est nécessaire. Et vous pouvez spécifier l'argument smtp-server via la ligne de commande, ce qui signifie qu'il est plus approprié pour les scripts. Le seul inconvénient est que la plupart des distributions Linux ne contiennent pas cet outil, vous devez donc le compiler vous-même.

Citations d' email projet sur github

Q: Qu'est-ce que 'email'?

A: 'email' est un programme que j'ai conçu pour envoyer des emails via des serveurs smtp distants via la ligne de commande ou utiliser 'sendmail' en interne, et pour pleinement interagir avec GNUPG afin de chiffrer et signer vos e-mails. .. Vous pouvez obtenir GNUPG sur: http://www.gnupg.org

Merci cygwin de me faire connaître ce client de messagerie utile .

Compiler et installer

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

Options de ligne de commande de l'email

$ 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

Utilisation de l'échantillon

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 jointe

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

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

Pour envoyer un courrier électronique sortant via un serveur Gmail, vous devez configurer le support TLS pour Exim , ce qui n’est pas une mince affaire. Ce Howto donne quelques explications et voici un lien avec des explications supplémentaires spécifiques à Gmail. Vous devriez vous accorder plusieurs heures pour que cela fonctionne. Je suggérerais de commencer par envoyer un courrier électronique de votre boîte aux serveurs SMTP activés pour TLS auxquels 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. Comme la communication est cryptée, vous ne pourrez pas utiliser d'outils tels que tcpdump pour analyser le protocole sur la ligne.

Eli Rosencruft
la source
1

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

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

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

Shrikant
la source
Les réponses doivent inclure suffisamment de détails pour être autonomes. Avoir des liens avec des informations plus complètes, c'est bien, mais au moins une partie du contenu doit être citée dans la réponse pour que cela puisse être utile après le début de la pourriture du lien.
user4556274