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) .
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.
Pour suffixe:
/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=-
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.
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 .
./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc
$ 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
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]
echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]
echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
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.
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/
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