正如/ 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 。 但是,你将不得不做这些事情之一,这不会发生魔法。
对于使用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')
我的问题是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
它运作良好。
如果您不关心筛选筛选,那么您可以configurationdovecot以使用/ var / mail / username作为收件箱,并以Maildir格式保留用户的其余邮件。
它将使得由MTA / sendmail发送的dovecot“see”消息到默认位置 – 不需要MTA / sendmail重新configuration。
你需要编辑文件:/ 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/