Я использую Ubuntu 18.04.2 LTS, и сценарий JanKanis не работает, как он предлагает. Запуск limitmem 100M script
ограничивает 100 МБ ОЗУ с неограниченным свопом.
Запуск limitmem 100M -s 100M script
завершается неудачно, так как cgget -g "memory:$cgname"
не имеет параметра с именем memory.memsw.limit_in_bytes
.
Поэтому я отключил своп:
# create cgroup
sudo cgcreate -g "memory:$cgname"
sudo cgset -r memory.limit_in_bytes="$limit" "$cgname"
sudo cgset -r memory.swappiness=0 "$cgname"
bytes_limit=`cgget -g "memory:$cgname" | grep memory.limit_in_bytes | cut -d\ -f2`
Я хотел написать рассказ о том, как именно я решил свою проблему. Надеюсь, это поможет другим и выложит некоторые новые лакомые кусочки, которые можно использовать в будущем.
Я где-то видел сообщение о ведении журнала отладки, а затем посмотрите syslog.
vim /etc/dovecot/conf.d/10 -logging.conf
#mail_debug = no
mail_debug = yes
хвостовой системный журнал, перезапустите dovecot, затем войдите в roundcube
хвост -f /var/log/syslog
перезапуск сервисной голубятни
~нажмите, укажите, авторизуйтесь на почту~
Я нашел кое-что интересное в системном журнале...
Jan 24 06:40:22 hwsrv-753880 systemd[1]: Started Dovecot IMAP/POP3 email server.
Jan 24 06:41:22 hwsrv-753880 dovecot: imap-login: Login: user=<username@domain.com>, method=PLAIN, rip=2607:5500:3000:1385::2, lip=2607:5500:3000:1385::2, mpid=31064, TLS, session=<+Cv2vKS5xIMmB1UAMAAThQAAAAAAAAAC>
Jan 24 06:41:22 hwsrv-753880 dovecot: imap(username@domain.com): Debug: Effective uid=5000, gid=5000, home=/var/vmail/username@domain.com
Jan 24 06:41:22 hwsrv-753880 dovecot: imap(username@domain.com): Debug: Home dir not found: /var/vmail/username@domain.com
Сообщение о прекрасном домашнем каталоге не найдено. Рядом с ним написано отладка, что указывает на то, что вы не увидите этого, если отладка не включена. Я зашел в /var посмотреть... а /var/vmail/ вообще не существует! Хм...
https://doc.dovecot.org/configuration_manual/mail_location/— это документация dovecot о том, где должна храниться почта. Это также говорит мне:
Автосоздание почтового ящика Dovecot в эпоху 1.x автоматически создавал почтовые ящики независимо от того, было ли установлено местоположение почты _. В версии 2.x автосоздание запускается только в том случае, если местоположение почты _установлено правильно.
Я использую виртуальных пользователей через SQL, и это может кое-что изменить. Я продолжал копаться в документации dovecot и наткнулся на Домашние каталоги для виртуальных пользователей по адресу https://doc.dovecot.org/configuration_manual/home_directories_for_virtual_users/. Вспоминая правильно установленный бит сверху, мне пришлось взглянуть на текущие действующие настройки dovecot и сравнить с документом Каталоги для виртуальных пользователей. страница.
dovecot -n Это показывает, что dovecot на самом деле использует (эффективный )в настройках
В моей текущей конфигурации почта отправлялась в место, не соответствующее документации. Я не был уверен во внутреннем устройстве голубятни, поэтому решил, что должен сделать все как можно ближе к документу. Не зная внутренностей, я, вероятно, выбрал живописный маршрут в некоторых вещах.
mkdir /var/vmail
chown -R 5000 :5000 /var/vmail Я не знаю, какой пользователь переходит на UID и GID 5000, и мне все равно. Это то, что нужно Dovecot (посмотрите на журнал выше, вы это увидите)
grep -rnw '/etc/dovecot' -e 'mail _location' Я не знаю, где в море конфигурационных файлов установлена эта переменная. Я также не знаю, находится ли он в нескольких местах, поэтому я использую этот grep, чтобы найти все файлы в /etc/dovecot, которые содержат строку адреса mail _.
/etc/dovecot/conf.d/10-mail.conf.orig:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf.orig:24:# mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf.orig:25:# mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:26:# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf.orig:30:mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:56: # mail_location, which is also the default for it.
/etc/dovecot/conf.d/10-mail.conf:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf:24:# mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf:25:# mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf:26:# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf:30:# ~this one is working mail_location = maildir:/var/mail/vhosts/%d/%n/
/etc/dovecot/conf.d/10-mail.conf:31:# mail_location = maildir:/var/vmail/%d/%n/mail
/etc/dovecot/conf.d/10-mail.conf:32:mail_location = maildir:/var/vmail/%u/mail
/etc/dovecot/conf.d/10-mail.conf:58: # mail_location, which is also the default for it.
/etc/dovecot/dovecot-sql.conf.ext:116:# mail - Mail location (overrides mail_location setting)
/etc/dovecot/dovecot-sql.conf.ext.orig:115:# mail - Mail location (overrides mail_location setting)
(примечание, если вы знаете, как читать вышеизложенное... пропустите это.
способ прочитать все, что является первой частью, - это имя файла, затем номер строки, а затем фактический текст в этой строке. с этой информацией вы можете запустить vim +24 /etc/dovecot/conf.d/10 -mail.conf, чтобы перейти к тому месту в файле, с которым вам нужно возиться.)
Не помню, где я это прочитал, но где-то у меня в голове засело, что dovecot вообще плохо работает с относительными каталогами, так что я знал, что нужно установить местоположение почты _по точному пути. Читая блок doc -над переменной, я придумал mail _location = maildir :/var/vmail/%u/mail
Я снова перезапустил dovecot, и хвост системного журнала, который у меня все еще работал раньше, теперь высветил что-то о не найденном домашнем каталоге, созданном со стандартными разрешениями. Сразу после этого создается домашний каталог, бла-бла. После этого волшебного проявления многословия я увидел нечто чудесное в копировании правил sieve в домашний каталог. Я зашел в roundcube, и все заработало! Я снова отключил dubug, снова запустил dovecot, почувствовал гордость и позволил своему эго немного раздуться.
Наконец, сито действительно было настроено правильно. Roundcube был настроен правильно. Dovecot работал, и я точно следовал инструкции. В конце концов я разобрал документацию, потратил около часа на расследование и обнаружил, что проблема связана с путем к файловой системе.
Доказательство -положительного того, что как бы строго вы ни следовали руководству, документация по-прежнему превыше всего. Я чувствую, что многие люди настолько привыкли к мгновенному удовлетворению, что забыли правило номер 1 любой *системы UNIX... RTFM