即使您使用Gmail等托管邮件服务,也可以通过Mutt在终端中收发邮件。我喜欢在Linux终端上阅读和编写电子邮件是多么容易,所以我是Mutt的忠实粉丝,Mutt是一个轻量级且干净的电子邮件客户端。对于电子邮件服务,不同的系统配置和网络访问不受影响。这个客户端通常隐藏在我的Linux终端的某个标签页或者某个终端多路复用器的面板上。放置电子邮件客户端应用程序。今天我们大多数人都使用托管电子邮件帐户,我们与电子邮件协议没有太多直接交互。Mutt(以及更早的ELM)是在更简单的时代创建的,当时检查邮件只是调用uucp,然后读取/var/mail。当然,穆特也在与时俱进。随着各种流行协议(如POP、IMAP、LDAP)的出现,得到了很好的支持。因此,即使我们使用的是Gmail之类的邮件服务,它也可以与Mutt无缝协作。现在大多数情况下,用户没有自己的邮件服务器,大多数用户会选择Gmail,所以下面以Mutt+Gmail为例。如果电子邮件隐私是您的首要任务,请考虑ProtonMail或Tutanota,它们都提供完全加密的电子邮件服务。其中,Tutanota包含很多开源组件,而ProtonMail则为付费用户提供IMAP桥接,简化了非浏览器环境下的邮件访问。但是很多公司、学校、组织并没有自己的邮箱服务,而是使用Gmail来代替,所以大部分用户都会有一个Gmail邮箱。当然,如果你有自己的电子邮件服务器,使用Mutt就更容易了。让我们从介绍开始。安装Mutt在Linux系统上,您通常可以直接从发行版提供的软件库中安装Mutt。另外,你需要在你的home目录下创建一个.mutt目录来存放配置文件:$sudodninstallmutt$mkdir~/.mutt在MacOS上,你可以通过InstallwithMacPorts或者Homebrew;在Windows上,使用Chocolatey安装。Mutt是一个MailUserAgent(MUA),所以它的作用是读取、写入和发送邮件到外部邮件池。将邮件实际传输到邮件服务器是其他应用程序或邮件服务的工作,虽然它们可以与Mutt合作,使它看起来像Mutt完成了所有工作,但事实并非如此。了解了两者的区别之后,我们就会更加清楚Mutt的配置。这就是为什么除了Mutt之外,我们还需要根据通信的服务类型来选择一些辅助应用程序。在本文中,我使用了IMAP服务,它使我的电子邮件本地副本与我的电子邮件服务提供商的远程副本保持同步。如果选择POP服务,配置难度更高,而且不需要依赖其他外部工具。我们需要用于IMAP集成的OfflineIMAPPython应用程序,它可以在其GitHub存储库中找到。OfflineIMAP仍在从Python2移植到Python3,目前需要手动安装,但您以后也可以通过python3-mpip命令安装。OfflineIMAP依赖于imaplib2库,这个库也比较辛苦,所以我更喜欢手动安装。同样通过Git将代码库克隆到本地,进入目录后用pip安装。首先安装rfc6555依赖项:$python3-mpipinstall--userrfc6555然后从源安装imaplib2:$gitclonegit@github.com:jazzband/imaplib2.git$pushdimaplib2.git$python3-mpipinstall--upgrade--user.$popd最后来自source安装OfflineIMAP:$gitclonegit@github.com:OfflineIMAP/offlineimap3.git$pushdofflineimap3.git$python3-mpipinstall--upgrade--user.$popd如果你在Windows上使用Cygwin,你还需要安装Portlocker。配置OfflineIMAPOfflineIMAP默认使用~/.offlineimaprc配置文件。在其代码库中会有一个名为offlineimap.conf的配置模板,可以直接移至主目录:$mvofflineimap3.git/offlineimap.conf~/。offlineimaprc`您可以使用任何文本编辑器打开和浏览此配置文件。它的注释很好,易于理解可用的配置项。下面是我的.offlineimaprc配置文件,为清楚起见未注释。对你来说,有些配置项的值可能略有不同,但可能会给你的配置带来一些启发:[general]ui=ttyuiaccounts=%your-gmail-username%pythonfile=~/.mutt/password_prompt.pyfsync=False[Account%your-gmail-username%]localrepository=%your-gmail-username%-Localremoterepository=%your-gmail-username%-Remoteststatus_backend=sqlitepostsynchook=notmuchnew[Repository%your-gmail-username%-Local]type=Maildirlocalfolders=~/.mail/%your-gmail-username%-gmail.comnametrans=lambdafolder:{'drafts':'[Gmail]/Drafts','sent':'[Gmail]/SentMail','标记':'[Gmail]/Starred','trash':'[Gmail]/Trash','archive':'[Gmail]/AllMail',}.get(folder,folder)[Repository%your-gmail-username%-Remote]maxconnections=1type=Gmailremoteuser=%your-gmail-username%@gmail.comremotepasseval='%your-gmail-API-password%'##remotepasseval=get_api_pass()sslcacertfile=/etc/ssl/certs/ca-bundle.crtrealdelete=nonametrans=lambdafolder:{'[Gmail]/Drafts':'drafts','[Gmail]/SentMail':'sent','[Gmail]/Starred':'flagged','[Gmail]/Trash':'trash','[Gmail]/AllMail':'archive',}.get(folder,folder)folderfilter=lambdafolder:foldernotin['[Gmail]/Trash','[Gmail]/Important','[Gmail]/Spam',]配置文件中有两个替换%your-gmail-username%和%your-gmail-API-password%的值分别。第一个值需要替换为Gmail用户名,即电子邮件地址中@gmail.com左侧的部分。第二个值需要在双因素身份验证(2FA)后从Google获取(即使您在检查电子邮件时不需要使用2FA)。为Gmail设置双因素身份验证(2FA)Google希望用户通过Gmail网站收发电子邮件,因此当您在Gmail网站之外操作电子邮件时,您实际上被Google视为“开发者”(即使您没有做任何开发工作)。也就是说,Google会认为您正在创建一个应用程序。要在开发人员级别获取应用程序密码,必须设置双因素身份验证。完成该过程后,您将获得一个应用程序密码,Mutt可以使用该密码在浏览器之外登录您的电子邮件。为了安全起见,您还可以在Google的帐户安全页面上添加用于恢复的电子邮件地址。在账户安全页面,点击“两步验证”开始设置2FA。设置过程中需要手机。激活2FA后,账户安全页面会出现“AppPasswords”选项,点击为Mutt创建一个新的App密码。Google生成密码后,替换.offlineimaprc配置文件中的%your-gmail-API-password%值。直接在以纯文本存储的.offlineimaprc文件中记录应用程序密码存在一定风险。我已经这样做了很长时间并且感觉很好,因为我的主目录是加密的。但是为了安全起见,我现在改用GnuPG来加密应用程序密码,这部分不在本文讨论范围内,关于如何设置GPG密码集成,可以参考我的另一篇文章。在Gmail中启用IMAP在您永远告别GmailWeb界面之前,还有最后一件事:您必须为您的Gmail帐户启用IMAP访问。在Gmail网站页面,点击右上角的“齿轮”图标,选择“查看所有设置”。在Gmail设置页面中,单击“POP/IMAP”选项卡并选中“启用IMAP”并保存您的设置。现在您可以在浏览器之外访问您的Gmail电子邮件。配置MuttMutt配置过程比较简单。像.bashrc、.zshrc、.emacs等配置文件,网上有很多优秀的.muttrc配置文件可供参考。我自己的.muttrc配置文件借鉴了KyleRankin、PaulFrields等人的配置项和想法。下面列出我的配置文件的一些要点:setssl_starttls=yessetssl_force_tls=yessetfrom='tux@example.com'setrealname='TuxExample'setfolder=imaps://imap.gmail.com/setspoolfile=imaps://imap.gmail.com/INBOXsetpostponed="imaps://imap.gmail.com/[Gmail]/Drafts"setsmtp_url="smtp://smtp.gmail.com:25"setmove=nosetimap_keepalive=900setrecord="imaps://imap.gmail.com/[Gmail]/SentMail"#Pathssetfolder=~/.mailsetalias_file=~/.mutt/aliassetheader_cache="~/.mutt/cache/headers"setmessage_cachedir="~/.mutt/cache/bodies"setcertificate_file=~/.mutt/certificatessetmailcap_path=~/.mutt/mailcapsettmpdir=~/.mutt/tempsetsignature=~/.mutt/sigsetsig_on_top=yes#BasicOptionssetwait_key=nosetmbox_type=Maildirunsetmove#gmaildoesthat#SidebarPatchsetsidebar_visible=yessetsidebar_width=16colorsidebar_newcolor221ccolor2settings##Adefoolcolor2settings33=example.com/INBOX"#Mailboxestoshowinthesidebar.mailboxes+INBOX\+sent\+drafts#Otherspecialfoldersetpostponed="+example.com/drafts"#navigationmacroindexgi"
