Я пытаюсь настроить почтовый сервер! Кажется, все в порядке (через несколько дней), но когда я попытался прочитать почту с помощью сервера IMAP:
18 апреля, 17:38:48 sd-84941 dovecot: imap (dlp): Error: open (/ data / maildir /dlp/cur/1460993401.13028_0.sd-84941:2,) не удалось: разрешение отклонено (euid = 1000 (michael) egid = 1000 (michael) missing + r perm: /data/maildir/dlp/cur/1460993401.13028_0.sd -84941: 2 ,, мы не в группе 8 (почта), директория принадлежит 0: 8 mode = 0777)
Письма находятся в папке maildir, но я не могу их прочитать из-за разрешений ...
-rw-rw ---- 1 root root 2363 18 апр, 17:55 1460994924.16416_0.sd-84941
Но если chmod 777 работает (но я не могу делать это каждый раз вручную ..):
-rwxrwxrwx 1 root root 2363 18 апр, 17:55 1460994924.16416_0.sd-84941: 2,
Что случилось? Кто дает разрешение на файл? fetchmail, procmail или dovecot?
----- Edit ------
Спасибо за ответы, @tripleee. Я попытаюсь сообщить подробности:
Я установил sendmail, procmail, fetchmail, dovecot и roundcube:
Sendmail и Roundcube: установка по умолчанию.
Procmail:
В / etc / procmailrc (I предпочитаем глобальную конфигурацию вместо пользовательского), у нас есть:
MAILDIR=/data/mails/
DEFAULT=$MAILDIR/
LOGFILE=/var/log/procmail
VERBOSE=on
В / etc / fetchmailrc:
set syslog
set daemon 120
poll mail.interpc.fr
with nodns,
with protocol POP3,
user "dlp",
with password mypass
option keep
Я создал пользователя vmail:
sudo addgroup --gid 5000 vmail
sudo adduser --home /data/mails/ --uid 5000 --gid 5000 --shell /bin/false vmail
В / etc / dovecot / пользователи (с uid и gid vmail):
dlp:{PLAIN}mypass:5000:5000::
В /etc/dovecot/conf.d/10-auth.conf я изменил на:
disable_plaintext_auth = no
#!include auth-system.conf.ext
!include auth-passwdfile.conf.ext
В /etc/dovecot/conf.d/10-mail .conf: mail_location = maildir: / data / mails /
root@sd-84941:/home/michael# ls -al /data/mails/cur/ total 48 drwxr--r-- 2 vmail vmail 4096 Apr 21 15:08 . drwxr--r-- 5 vmail vmail 4096 Apr 21 15:08 .. -rwxr--r-- 1 root root 29635 Apr 21 13:31 1461238276.4519_0.sd-84941:2, -rwxr--r-- 1 root root 3740 Apr 21 13:45 1461239150.5706_0.sd-84941:2, -rw-r--r-- 1 root root 2953 Apr 21 15:04 1461243887.17704_0.sd-84941:2,
Спасибо за помощь ...
Ваша комбинация программного обеспечения в наши дни немного необычна (т.е. довольно стандартна 10-20 лет назад). Я предполагаю, что вы используете fetchmail для подключения к POP-серверу, а затем он передает почту в procmail для доставки почты в локальные директории. Такой подход стал необычным отчасти потому, что сейчас не так много серверов, которые поддерживают только POP, а IMAP позволяет лучше переносить почту между серверами после доставки. Если есть возможность использовать IMAP на предыдущем сервере, то посмотрите на imapfilter. Также в наши дни необычно, когда нужно запустить почтовый сервер, который не может принимать прямую доставку, что позволит вам просто установить правило пересылки почты на исходящем сервере.
Скорее всего, вы столкнулись с проблемами, потому что используете procmail для доставки почты непосредственно в локальные директории, и делаете это с запуском процесса procmail от имени root, а не от имени dovecot, поэтому dovecot не может читать файлы.
Вы можете понять, как запустить procmail от имени правильного пользователя или (если запущен от имени root), как сказать ему, чтобы он хранил файлы с правильным владельцем. Вы можете получить некоторую степень совместимости, но, например, dovecot не сможет правильно индексировать письма по мере их поступления, так что поиск будет нарушен.
Я предлагаю вам использовать deliver
от dovecot в качестве локального агента доставки. Он может заменить procmail, или его можно назвать procmail 1,2 . В любом случае, вам нужно будет вызвать его с соответствующим аргументом (-d
), идентифицирующим пользователя, которому вы доставляете почту. Если вы используете procmail для принятия решения о том, в какую почтовую папку доставлять почту, вы можете использовать для этого аргумент -p
, или лучше использовать механизм фильтрации решеток dovecot для принятия таких решений. procmail действительно лучше всего работает с системными пользователями, а не с виртуальными пользователями.
Ситовое решение лучше, чем procmail для виртуальных пользователей, хотя это открытый вопрос с менее приятным синтаксисом фильтрации. У меня было много лет хорошего сервиса от procmail, и в настоящее время я использую немного сита, потому что он работает до доставки, но для передачи почты между серверами после доставки, и где позволяют обстоятельства, я бы предпочёл писать фильтры с помощью imapfilter
.