Windows下编译Alpine邮件客户端

Alpine是一个具有悠久历史的基于Pine的一个基于文本界面的邮件客户端。

说到Alpine你可能感觉很陌生,但是你可能听说过一个叫做GNU Nano的文件编辑器。Alpine的前身是由华盛顿大学开发Pine,而Pine的邮件编辑器独立出来成为了一个文本编辑器Pico,而GNU Nano正是Pico的一个基于GNU许可证的克隆。

Alpine一开始是在华盛顿大学停止开发Pine之后由其重新开发的并以Apache License发布,后来华盛顿大学又停止了Alpine的开发,Alpine的开发转向了社区,并有了各种Patch。当前,Alpine由一个前华盛顿大学的开发者维护,而且还在更新,甚至将SSL/TLS的库换成了LibreSSL。最近的提交中,Alpine改进了在Windows平台上编译的问题。因而我开始尝试在Windows 10上编译Alpine。

编译

首先你需要获得Alpine的代码,Alpine的代码目前托管于一个Git仓库中,对于Windows,你可能需要先安装Git for Windows,接着在Git Bash中克隆Alpine的代码

git clone git://repo.or.cz/alpine.git

接着你需要准备工具链,也就是Visual Studio。当然你并不需要完整安装Visual Studio,我们只需要其中的一部分组件。这里我们采用最新的Visual Studio 2019 Community版本,我这边的安装配置如下

{
  "version": "1.0",
  "components": [
    "Microsoft.VisualStudio.Component.CoreEditor",
    "Microsoft.VisualStudio.Workload.CoreEditor",
    "Microsoft.VisualStudio.Component.Roslyn.Compiler",
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Component.TextTemplating",
    "Microsoft.VisualStudio.Component.VC.CoreIde",
    "Microsoft.VisualStudio.Component.Windows10SDK",
    "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
    "Microsoft.VisualStudio.Component.VC.Redist.14.Latest",
    "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core",
    "Microsoft.VisualStudio.Component.VC.Llvm.Clang",
    "Microsoft.VisualStudio.Component.Windows10SDK.17763",
    "Microsoft.VisualStudio.Workload.NativeDesktop"
  ]
}

在Alpine代码仓库的根目录下面,有一个build.bat的脚本,这个脚本不能在通常的命令行中执行,而是需要使用VS的命令行。我们只需要在x86 Native Tools Command Prompt for VS 2019的命令行中,进入代码根目录并执行

>build.bat wnt

就能开始编译。(当然还有一个w2k的编译命令,这个应该是增加了Kerboros支持,对于一般的邮件使用,大概用不到)

编译完成后,你能在源代码仓库根目录下的alpine目录下找到编译好的可执行文件,运行所需文件是以下几个

alpine.exe
ldap32.dll
libtls-15.dll
libssl-43.dll
libcrypto-41.dll

我个人尝试使用Windows 10 1903 + Visual Studio 2019 Community编译成功。

运行

运行时要注意几个问题。当前绝大多数邮件服务器都需要SSL/TLS通信,而SSL/TLS就需要根证书,Alpine可执行文件中并不自带根证书,所以会出现证书错误。根据libressl文件夹下的README中的提示, LibreSSL默认的证书路径是C:\libressl\ssl\certs,所以你需要手动创建目录并把源代码根目录下libressl\certs文件夹下的所有根证书全部复制过去。之后就不会出现不能验证SSL/TLS证书的问题。网络上的一些教程中,在配置SMTP等服务器的时候使用了novalidate-cert参数,意思为不验证证书,这很明显就是一种极度危险的配置。

另一个问题是对于HiDPI的使用环境,Alpine的界面会很模糊,所以你需要在右键菜单,「属性」的「兼容性」选项卡中,选择「更改高DPI设置」,勾选「高DPI缩放替代」,「缩放执行」改为「应用程序」。

关于Alpine的更多使用可以参考这篇文章1,这可能是你能找到的关于Alpine最好的中文文章。


  1. 推荐使用邮件客户端Alpine↩︎

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注