Назад | Перейти на главную страницу

Dovecot не получает почту из / var / spool / mail / $ user в mail_location

Как видно из / var / log / maillog при получении или отправке почты, sendmail сохраняет письма в / var / spool / mail / $ user и регистрирует их как stat = Отправлено

Когда пользователь пытается отправить или получить почту через 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 нет журнала об этой проблеме. Мне интересно, как отправить почтовый файл в почтовый каталог пользователя?

Приведенный выше комментарий Анджея верен; 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

поэтому я повторяю свою точку зрения: вы можете настроить MDA sendmail, procmail, чтобы помещать входящую почту в /home/$user/mail/.INBOX, или вы можете настроить голубятню для просмотра /var/spool/mail/$user. Но вам придется сделать одну из этих вещей, это не произойдет по волшебству.

Реконфигурация 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 использовать dovecot только для UID не меньше 1000
    [классическая доставка для системных пользователей / учетных записей, голубятня для обычных пользователей]
  • доставка поддержки sendmail существующим виртуальным пользователям dovecot [реконфигурация на основе local_procmail НЕ поддерживает это]

Моя проблема в том, что путь к файлу 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

Это работает хорошо.

Dovecot: INBOX как mbox в / var / mail / username, а остальные почтовые ящики в Maildir

Если вас не интересует ситовая фильтрация, вы можете настроить dovecot на использование / var / mail / username в качестве почтового ящика и сохранение остальных почтовых ящиков пользователя в формате Maildir.

Это заставит dovecot «видеть» сообщения, доставленные MTA / sendmail в расположение по умолчанию - перенастройка MTA / sendmail не потребуется.

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/