从 /var/log/maillog 中可以看到,当邮件收到或发送时,sendmail 会将邮件保存到 /var/spool/mail/$user 并将其记录为统计=已发送
当用户尝试通过 imap 发送或接收邮件时,它不会显示在 ~$user/mail/
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/mail:INBOX=~/mail/.INBOX
- 目录和文件权限正确。
[root@mail ~]# ll -d /home/$user/mail
drwx------. 7 $user $user 4096 Oct 25 14:04 /home/$user/mail
/var/log/maillog 中没有关于此问题的日志。我想知道如何将邮件文件发送到用户的邮件目录?
答案1
Andrzej 的上述评论是正确的;dovecot 不应该自动执行此操作。您要么需要告诉 sendmail 将邮件放在 dovecot 期望的位置(或至少告诉其本地投递代理这样做),要么告诉 dovecot 期望它位于 sendmail 放置它的位置。
就我而言,我选择后者;我的dovecot.conf
包括以下行
mail_location = mbox:~/:INBOX=/var/spool/mail/%u
编辑:您的 sendmail 配置与我的类似,使用procmail
本地 MDA。procmail 的手册页建议这/var/spool/mail/$user
是 procmail 放置传入邮件的默认位置(如果没有提供其他位置):
/var/spool/mail/$LOGNAME system mailbox; both the system mailbox and the immediate directory it is in will be created every time procmail starts and either one is not present
所以我重复我的观点:您可以配置 sendmail 的 MDA、procmail,将收到的邮件放入/home/$user/mail/.INBOX
,也可以配置 dovecot 查看/var/spool/mail/$user
。但您必须做其中一件事,这不是魔术。
答案2
Sendmail 重新配置以便与 dovecot 集成
http://wiki2.dovecot.org/LDA/Sendmail
对于使用 dovecot 为现有操作系统提供交付服务,请考虑将以下几行添加到sendmail,mc
文件 [sendmail.mc
需要编译成sendmail.cf
]
FEATURE(`local_procmail', `/usr/local/libexec/dovecot/dovecot-lda',`/usr/local/libexec/dovecot/dovecot-lda -d $u')
MODIFY_MAILER_FLAGS(`LOCAL', `-f')
其他可能的 sendmail 重新配置选项
- 使 sendmail 仅对 UID 不小于 1000 的用户使用 dovecot
[系统用户/账户使用经典传送,普通用户使用 dovecot] - 使 sendmail 支持向现有的虚拟 dovecot 用户发送邮件 [基于 local_procmail 的重新配置不支持它]
答案3
我的问题是 INBOX 文件路径错误。将 mail_location 从 maildir 更改为 mbox 并将 INBOX 文件更改为 /var/spool/mail/%u 后,出现了一些权限错误。
[root]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/:INBOX=/var/spool/mail/%u
错误:
failed: Operation not permitted (egid=500)
然后设置权限
[root]# chmod 0600 /var/mail*
[root]# service dovecot restart
效果很好。
答案4
您需要编辑文件:/etc/procmailrc
# file: /etc/procmailrc
# system-wide settings for procmail
SHELL="/bin/bash"
SENDMAIL="/usr/sbin/sendmail -oi -t"
LOGFILE="/var/log/procmail.log"
DEFAULT="$HOME/Maildir/"
MAILDIR="$HOME/Maildir/"
:0
* ^X-Spam-Status: Yes
.spam/