Gnu Mailutils 配置直接对maildir 进行操作?

sou*_*rce 6 email maildir mailutils

我想配置 GNU Mailutils 邮件程序,以便它在现有的 maildir 目录上运行。目前我的 mailutils.rc 看起来像这样:

mailbox{
        mailbox-pattern "maildir:///home/${user}/Maildir";
        mailbox-type maildir;
}
Run Code Online (Sandbox Code Playgroud)

这允许我从该文件夹读取邮件,但是,邮件程序总是将所有打开的邮件移动到/home/${user}/mbox. 有没有办法告诉邮件将文件保留在原始位置?

Joh*_*nen 4

我能够使用 GNU Mailutil 的mail. 我没有找到您问题的直接答案,但找到了解决您问题的方法。

我假设您配置了本地 MTA (Exim),以便将新邮件传递到$HOME/Maildir/,即您的 Exim 配置设置为dc_localdelivery='maildir_home'

安装heirloom-mailx它提供了 mailx 的替代品,并提供比 GNU Mailutil 版本的 mailx 更多的功能。确保它是mailx替代配置中的实际规定。通常是这样,因为传家宝具有最高优先级。你可以这样检查:

jb@x60 ~ $ sudo update-alternatives --config mailx
There are 2 choices for the alternative mailx (providing /usr/bin/mailx).

  Selection    Path                     Priority   Status
------------------------------------------------------------
* 0            /usr/bin/heirloom-mailx   60        auto mode
  1            /usr/bin/heirloom-mailx   60        manual mode
  2            /usr/bin/mail.mailutils   30        manual mode

Press enter to keep the current choice[*], or type selection number:
Run Code Online (Sandbox Code Playgroud)

使用环境变量配置 mailx $MAIL。由于此配置意味着所有用户的邮件都会传递到其各自的本地 Maildir,我认为这是执行此操作的最优雅的方法:

x60 ~ # echo 'export MAIL=$HOME/Maildir/' > /etc/profile.d/local_mailx.sh
Run Code Online (Sandbox Code Playgroud)

无需 chmod 755 该文件,因为它将由登录 shell 获取。但是,您需要注销并重新登录才能使环境变量更改生效。

概念证明:

jb@x60 ~ $ grep dc_localdelivery /etc/exim4/update-exim4.conf.conf
dc_localdelivery='maildir_home'
jb@x60 ~ $ echo $MAIL
/home/jb/Maildir/
jb@x60 ~ $ mail jb
Subject: test 
test
.
EOT
jb@x60 ~ $ mail
Heirloom mailx version 12.5 6/20/10.  Type ? for help.
"/home/jb/Maildir/": 1 message 1 new
>N  1 Jo Bo              Sun Aug 25 14:06   19/489   test
? 1
Message  1:
From jb@x60 Sun Aug 25 14:06:52 2013
Return-path: <jb@x60>
Envelope-to: jb@x60
Delivery-date: Sun, 25 Aug 2013 14:06:52 +0200
Date: Sun, 25 Aug 2013 14:06:52 +0200
To: jb@x60
Subject: test
User-Agent: Heirloom mailx 12.5 6/20/10
Content-Type: text/plain; charset=us-ascii
From: Jo Bo <jb@x60>
Status: R

test

? q
Held 1 message in /home/jb/Maildir/
Run Code Online (Sandbox Code Playgroud)

问题解决了。问题仍然存在:您需要坚持使用 GNU Mailutil 的 mailx 吗?我怀疑是这样。也许可以使用 GNU 来完成此任务,但由于 Heirloom 提供了功能的超集,并且您仍然可以使用 Mailtutils 中的其他工具,因此我不会费心进行进一步的研究。Heirloom 是一个不错的软件。YMMV 和 HTH。

玩得开心!