背景:周末在家,因工作需要给社区发邮件,但在 mac
上配置 git send-email
时遇到了很多问题,折腾了两个半小时才搞定,值得记录一下。
在公司内网给社区发邮件时,只需要在所用的 Linux
服务器上配置好 git send-email
的相关信息,就能顺利发出去了,即使群发也可以。但回家后,由于邮件服务器的安全限制,配置好 git send-email
后还是不能发出去。
在网上搜了一下,有人说需要使用 msmtp
客户端来发邮件,于是尝试了一下,但按照网上给出的配置教程发现还是不行,折腾了一番,终于成功了。下面介绍几个关键点。
mac
上安装 msmtp
软件,命令如下:$ brew install msmtp
安装好后,可以检查一下 msmtp
能否正常工作,以及邮件服务器是否正常,命令如下:
$ /opt/homebrew/bin/msmtp --host=mail.xxxx.cn --serverinfo
SMTP server at mail.xxxxxx.cn (mail.xxxxxx.cn [222.222.222.222]), port 25:
xxxxxx.cn Anti-spam GT for Coremail System (.xxxxxx.cn[20191106])
Capabilities:
PIPELINING:
Support for command grouping for faster transmission
STARTTLS:
Support for TLS encryption via the STARTTLS command
AUTH:
Supported authentication methods:
PLAIN LOGIN
This server might advertise more or other capabilities when TLS is active.
git config
配置 sendemail
相关信息使用以下命令配置 git 中 sendemail 相关的配置信息:
$ git config --local user.name "BB AA"
$ git config --local user.email aabb@xxxxxx.cn
$ git config --local format.signoff true
$ git config --local log.date local
$ git config --local sendemail.smtpserver mail.xxxxxx.cn
$ git config --local sendemail.smtpserverport 25
$ git config --local sendemail.smtpencryption starttls
$ git config --local sendemail.smtpuser aabb@xxxxxx.cn
$ git config --local sendemail.smtppas 邮箱密码
$ git config --local sendemail.suppresscc self
$ git config --local sendemail.confirm auto
$ git config --local sendemail.annotate no
上面最后一个配置项 非常关键:一定要配置为 no,即:
git config --local sendemail.annotate no
msmtp
配置文件创建 ~/.msmtprc
文件,msmtp
默认读取该配置文件里的内容,因此需要填写以下信息:
# Set default values for all accounts:
defaults
auth plain
tls off
tls_starttls on
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
#Gmail Account:
account aabb
host mail.xxxxxx.cn
port 25
from aabb@xxxxxx.cn
user aabb@xxxxxx.cn
password your_passwd
# Set a default account:
account default : aabb
~/.msmtprc
文件的访问权限因为上述配置文件中存在明文密码,按照 msmtp
的要求需要对配置文件设置访问权限,命令如下:
$ chmod 0600 ~/.msmtprc
将上面的内容全部配置好后,如果没有出现什么错误,就可以直接发邮件了,命令如下:
$ git send-email --to name@xxxx.cn ./0000-xxxx.patch