getmail

出自 ArchWiki

本条目或章节需要语言、wiki 语法或风格改进。请参考 Help:Style

原因: cron (cronie) 不再包含在 base 中,必须手动安装,或者使用 systemd/Timers 代替(在 Talk:Getmail 中讨论)

getmail 是一个邮件收取工具,旨在让您能够从各种邮件服务器上的一个或多个邮件帐户获取邮件到您的本地计算机,以便轻松阅读。getmail 的设计目标是安全、灵活、可靠且易于使用。getmail 旨在取代其他邮件收取工具,例如 fetchmail

安装

安装 getmailAUR 软件包。

配置

  • 创建一个配置目录,并通过执行以下命令设置正确的权限: $ 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 格式存储我们的邮件。两种主要的邮箱格式是 mboxmaildir。两者之间的主要区别在于 mbox 是一个文件,其中存储了您的所有邮件及其标头,而 maildir 是一个目录树。每封邮件都是自己的文件,这通常会加快速度。

一个 maildir 只是一个包含文件夹 curnewtmp 的文件夹。

$ 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

启用/启动 用户单元 get_mail.timer

参见