getmail
getmail 是一个邮件收取工具,旨在让您能够从各种邮件服务器上的一个或多个邮件帐户获取邮件到您的本地计算机,以便轻松阅读。getmail 的设计目标是安全、灵活、可靠且易于使用。getmail 旨在取代其他邮件收取工具,例如 fetchmail。
安装
配置
- 创建一个配置目录,并通过执行以下命令设置正确的权限:
$ mkdir -m 0700 ~/.getmail
。主配置文件通常包含敏感信息,即纯文本密码。 - 创建一个配置文件,默认文件为:
~/.getmail/getmailrc
。每个要从中收取邮件的邮件服务器都需要一个单独的配置文件。默认文件以外的配置文件必须作为参数显式传递给 getmail 命令。
收取邮件
这是一个与 gmail 帐户一起使用的 getmailrc
示例。
getmailrc
[retriever] type = SimplePOP3SSLRetriever server = pop.gmail.com username = username@gmail.com port = 995 password = password [destination] type = Maildir path = ~/mail/
您可以根据您的 POP3 服务的规范进行调整。
密码管理
可以不将密码存储在配置文件中,而是调用外部程序来读取密码。在这种情况下,您将使用 password_command
参数
password_command = ("/path/to/password-retriever", "-p", "myaccount@example.org")
请注意,密码参数(在上面的示例配置中)会覆盖此参数;请指定其中一个,而不是两者都指定。
其他选项
大多数人会希望在他们的 getmailrc
中添加以下部分,以防止每次运行 getmail 时都下载服务器上的所有邮件。
getmailrc
[options] read_all = False
在本指南中,我们将以 maildir
格式存储我们的邮件。两种主要的邮箱格式是 mbox
和 maildir
。两者之间的主要区别在于 mbox
是一个文件,其中存储了您的所有邮件及其标头,而 maildir
是一个目录树。每封邮件都是自己的文件,这通常会加快速度。
一个 maildir
只是一个包含文件夹 cur
、new
和 tmp
的文件夹。
$ mkdir -p ~/mail/{cur,new,tmp}
现在,运行 getmail。如果它工作正常,您可以创建一个 cronjob,让 getmail 每 n 小时/分钟运行一次。键入 crontab -e
以编辑 cronjobs,然后输入以下内容
*/10 * * * * /usr/bin/getmail
这将使 getmail
每 10 分钟运行一次。
此外,为了让 getmail 静默运行,我们可以通过在 getmailrc
中添加以下内容来将其详细程度降低为零。
getmailrc
[options] verbose = 0
使用 getmail 管理多个电子邮件帐户
默认情况下,当您运行 getmail
时,程序会搜索如上所述创建的 getmailrc 文件。如果您有多个想要从中获取邮件的邮件帐户,则可以为每个电子邮件地址创建一个这样的文件,然后告诉 getmail 使用这两个文件运行。显然,如果您有两个帐户和两个文件,则不能都将它们称为 getmailrc。您所做的是给它们两个不同的名称,以我自己为例:我将一个称为 personal,另一个称为 university。这两个文件分别包含与我的个人邮件和我的大学工作邮件相关的内容。然后,为了让 getmail 在这两个文件上工作,而不是搜索 getmailrc(默认),我使用 --rcfile 开关,如下所示: getmail --rcfile university --rcfile personal
如果您有更多电子邮件帐户,这可以与更多文件一起使用,只需确保每个文件都在 .getmail 目录中,并确保更改 cronjob 以使用 --rcfile 开关运行命令。例如
*/30 * * * * /usr/bin/getmail --rcfile university --rcfile personal
显然,您可以随意命名您的文件,只要您将它们包含在 cronjob 或 shell 命令中,并且它们位于 .getmail/ 目录中,getmail 就会从这两个帐户中获取邮件。
使用 procmail 整理邮件
编辑您的 getmailrc 以将检索到的邮件传递给 procmail
[destination] type = MDA_external path = /usr/bin/procmail
然后配置 procmail 以过滤您的邮件。
使用 systemd 自动获取邮件
您可以使用 Systemd/Timers 每 n 小时/分钟运行 getmail
。为 timer 创建一个 unit 文件
~/.config/systemd/user/get_mail.timer
[Unit] Description=Run getmail every 15 minutes [Timer] OnActiveSec=15min OnUnitActiveSec=15min [Install] WantedBy=timers.target
现在创建 service 文件
~/.config/systemd/user/get_mail.service
[Unit] Description=Run getmail [Service] ExecStart=/usr/bin/getmail --quiet [Install] WantedBy=default.target