Dovecot不会从/ var / spool / mail / $ user到mail_location获取邮件

正如/ var / log / maillog中收到或发送邮件所看到的,sendmail将邮件保存到/ var / spool / mail / $ user并logging为stat = Sent

当用户尝试通过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中没有关于这个问题的日志。 我想知道如何发送邮件文件到用户的邮件目录?

Andrzej上面的评论是正确的。 鸽舍不应该自动地做到这一点。 你或者需要告诉sendmail把邮件放在dovecot所期望的地方(或者至less告诉它的本地交付代理这么做),或者告诉dovecot在sendmail放在哪里。

就我而言,我是做后者的; 我的dovecot.conf包含该行

 mail_location = mbox:~/:INBOX=/var/spool/mail/%u 

编辑 :你的sendmail的configuration和我的一样,使用procmail作为本地的MDA。 procmail的手册页build议/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 

所以我重复一下我的观点:你可以configurationsendmail的MDA,procmail,把收到的邮件放到/home/$user/mail/.INBOX ,或者你可以configurationdovecot来查看/var/spool/mail/$user 。 但是,你将不得不做这些事情之一,这不会发生魔法。

Sendmail重新configuration与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重新configuration选项

  • 使得sendmail只能使用dovecot不小于1000的UID
    [系统用户/帐户的类似交付,普通用户的鸽友]
  • 使sendmail支持交付给现有的虚拟dovecot用户[基于local_procmail的重新configuration不支持]

我的问题是INBOX文件path错误。 将maildir中的mail_location更改为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 

它运作良好。

Dovecot:在/ var / mail / username和Maildir中邮箱的其余部分将INBOX作为mbox

如果您不关心筛选筛选,那么您可以configurationdovecot以使用/ var / mail / username作为收件箱,并以Maildir格式保留用户的其余邮件。

它将使得由MTA / sendmail发送的dovecot“see”消息到默认位置 – 不需要MTA / sendmail重新configuration。

http://wiki2.dovecot.org/Namespaces#Mixed_mbox_and_Maildir

你需要编辑文件:/ 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/