在墙内用gmail两步认证发送kernel patch

Linux Kernel的开发,都是通过邮件发patch的形式来review的。如果用自己的邮件服务器当然没问题。
不过如果想用gmail帐号来发patch,必须翻墙才行;
如果你的gmail帐号开通了两步认证(如果没有,建议开通),还需要额外的App-Specific密码。

这里介绍一个简便的方法。

前提

有一个翻墙的方式,比如Shadowsocks
开通了gmail两步认证。

原理

  • 配置git使用msmtp来发送邮件;
  • 通过proxychains来翻墙;
  • 通过App-Specific密码来登录Google的SMTP server

步骤(以shadowsocks为例)

  1. 安装msmtp, proxychains
    sudo apt-get install msmtp proxychains
    
  2. 配置msmtp使用gmail的SMTP服务
    $ cat ~/.msmtprc
    # Example for a user configuration file
    # Set default values for all following accounts.
    defaults
    tls on
    tls_trust_file /etc/ssl/certs/ca-certificates.crt
    logfile ~/msmtp.log
    # My email service
    account gmail
    host smtp.gmail.com
    port 587
    from <your-gmail-id>@gmail.com
    auth on
    user <your-gmail-id> @gmail.com
    password
    # Set a default account
    account default : gmail
    
  3. 配置proxychains使用shadowsocks
    $ cat /etc/proxychains.conf
    ...
    [ProxyList]
    # add proxy here ...
    socks5 127.0.0.1 1080 ## Set socks5 proxy to your sslocal ip/port
    
  4. 配置App-Specific Password
    1. 登录到https://security.google.com/settings/security/apppasswords
    2. Generate一个密码,建议设置一个custom name,比如说linux-kernel
    3. 这个密码一般是16个ascii码,保留好这个密码,建议保存在KeePass里。
  5. 生成git patch并发送邮件
    # 生成patch
    # 生成patch
    git format-patch --to=<kernel-mailing-list> --cc=<reviewer> --subject-prefix="PATCH linux" <revision range>
    
    # 启动shadowsocks
    sslocal -c <your-ss-config.json>&
    
    # 通过proxychains来发送邮件
    proxychains git send-email <your patches>.patch
    

    当它提示要输密码的时候,不要输gmail的密码,输入之前generate的linux-kernel的密码

    password for <your-gmail-id>@gmail.com at smtp.gmail.com:
    

Done!

Share