12 votes

Envoyer un courriel à partir de la ligne de commande (MacOS Monterey 12.3)

J'essaie d'envoyer un courriel à partir de la ligne de commande, mais cela ne fonctionne pas :

echo "Hello World" | mail -s "Test email" someone@example.com

Il y a quelques années, "ça marchait" parce que mail utilisait (apparemment) un serveur smtp de Mail.app et envoyait le courrier électronique. Il y a deux serveurs smtp qui fonctionnent dans Mail.app (iCloud et mon FAI sur le port 25) mais mail ne peut toujours pas envoyer d'email depuis la ligne de commande.

Que se passe-t-il ?

7voto

OK, ça marche maintenant. Je laisse ce rapport pour la postérité.

Lors de l'utilisation de mail à partir de la ligne de commande, postfix doit être configuré correctement. Il ne semble pas obtenir ses paramètres de serveur smtp à partir de Mail.app (peut-être que c'était le cas auparavant, mais plus maintenant). Vous devez les définir vous-même. La documentation correspondante se trouve ici : http://www.postfix.org/SOHO_README.html#fantasy

Ces paramètres fonctionnent :

# Set external SMTP relay host here, IP or hostname accepted along with a port
relayhost = smtp.myispserver.com:465
# Set username and password
smtp_sasl_password_maps = static:myusername:mypassword
# Enable auth
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
# Turn on tls encryption
smtp_tls_security_level = encrypt
header_size_limit = 4096000

# For port 465
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt

# For rewriting mymacusername@mymacname.home to myusername@myisp.com
smtp_generic_maps = hash:/etc/postfix/generic

Si le port sortant 25 est bloqué, utilisez 465 ou 587. Je soupçonnais que le serveur smtp refusait d'accepter les connexions dont l'en-tête "From : " de l'expéditeur était juste. La réponse était la suivante : L'adresse de l'expéditeur est rejetée : Domain not found (en réponse à la commande RCPT TO). Utilisez smtp_generic_maps pour réécrire.

Vérifiez les journaux smtp et smtpd avec :

log stream --predicate  '(process == "smtpd") || (process == "smtp")' --info

1voto

mpp Points 76

J'ai trouvé ceci fil de discussion sur reddit qui aborde la question et propose cette solution :

"Si Mail.app est configuré avec un compte, vous pouvez faire ce qui suit : echo "Hello World" | mail -s "BCC Testing email" someone@example.com -c second@example.com -b third@example.com

Le -c correspond à la copie carbone et le -b à la copie cachée".

De même, les personnes en ce fil dire que vous avez besoin d'un utilitaire pour faire cela et recommander Envoyer un courriel . Si Mail.app ne fonctionne toujours pas après avoir essayé les solutions, essayez d'utiliser Envoyer un courriel et voir si cela fait une différence.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X