Fedora git send-email 使用 msmtp 发送 Gmail 邮件

参考:
      http://www.habadog.com/2011/11/23/send-mail-with-msmtp-mutt-linux
      http://www.absolutelytech.com/2010/07/17/howto-configure-msmtp-to-work-with-gmail-on-linux

msmtp 是一款专门负责邮件发送的客户端软件,基于GPL发布,支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性。
其主页是 msmtp.sourceforge.net:
      Msmtp is an SMTP client with a sendmail compatible interface ...

安装 
      sudo apt-get install msmtp

如需要对TLS/SSL的支持,还需要安装 GnuTLS 或者 OpenSSL,官方推荐 GnuTLS (https://help.ubuntu.com/community/GnuTLS):
      sudo yum install gnutls*

另外,使用 Gmail 需要安装 ca-certificates:
      sudo yum install ca-certificates

msmtp 有 3 中工作模式:
      Sendmail mode (default)
      Server information mode
      Remote Message Queue Starting mode
对于发送邮件来说,使用 Sendmail mode (default) 就可以了:
       In  the  default sendmail mode, msmtp reads a mail from standard input and sends it to an SMTP server for delivery.

配置 msmtp
安装完后,编辑 msmtp 配置文件 ~/.msmtprc

复制代码
    defaults
    tls on
    tls_starttls on
    tls_trust_file /etc/ssl/certs/ca-bundle.crt
 
    account default
    host smtp.googlemail.com
    port 587
    auth on
    user [email protected]
    password mypass
    from [email protected]
    logfile ~/msmtp.log
复制代码

[email protected] 和 mypass 替换成实际的邮箱和密码就可以了,这里密码是明文。注意,发送邮件默认是 25 端口,但是 Gmail 邮件服务商用的不是 25 端口,而是 465 或 587 端口。如果不设置端口,发送邮件会报错 "Must issue a STARTTLS command first"。logfile 如果设置的时候要注意设置访问权限,保证当前用户可写。

保存后,修改访问权限
      chmod 0600 .msmtprc
如果不这样,会报错:
      must have no more than user read/write permissions

测试发送邮件:
      msmtp [email protected]
输入任意字符,然后按Ctrl+D退出,查看邮件是否收到。可以查看 logfile 里面的发送日志记录。


配置 mutt
查看 msmtp 安装路径
      $ which msmtp
      /usr/bin/msmtp
编辑 git 配置文件 ~/.gitconfig

复制代码
[color]
    ui = auto
[user]
    email = [email protected]
    name  = woodpecker
[push]
    default = simple
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[alias]
    dt   = difftool
    ci   = commit -v
    cia  = commit -v --amend
    ca   = commit -v -a
    caa  = commit -v -a --amend
    co   = checkout
    br   = branch
    st   = status
    cp   = cherry-pick
    cpc  = cherry-pick --continue
    cpa  = cherry-pick --abort
    rb   = rebase
    rbi  = rebase -i
    rbim  = rebase -i master
    rbc  = rebase --continue
    rba  = rebase --abort
    mt   = mergetool
    bl   = gui blame
    mt   = mergetool
    addp = add -p
[sendemail]
    smtpserver = smtp.gmail.com 
    smtpserver = /usr/bin/msmtp
    smtpuser = [email protected]
    smtpencryption = tls
    smtpserverport = 465
[rerere]
    enabled = true
[core]
	excludesfile = ~/.gitignore
[merge]
	tool = gvimdiff
[branch]
    autosetupmerge = always
复制代码

后面就可以用git send-email写邮件后通过 msmtp 发送了。

 # git send-email --to [email protected]  --cc [email protected] 0001-qcow2-Patch-for-shrinking-qcow2-disk-image.patch

小结

对于 msmtp 的详细介绍,可以参考 http://msmtp.sourceforge.net/documentation.html 或者 man msmtp。
文档里面提供了配置示例,包括 msmtp 配合 mutt 的配置。

对于 mutt,还有很多需要配置,比如对多个邮件帐号的支持、分类文件夹等,这些会在后面的使用过程中逐渐完善。

你可能感兴趣的:(Fedora git send-email 使用 msmtp 发送 Gmail 邮件)