Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
—> статьи
—> FreeBSD
|
# cd /usr/ports/mail/dovecot2 # make install clean # dovecot --version 2.1.15 |
Параметры сборки оставлены по умолчанию, выбрав только MySQL.
Для поддержки работы Sieve-фильтров (в том же Roundcube) необходимо установить еще один порт:
# cd /usr/ports/mail/dovecot2-pigeonhole # make install clean |
Устанавливаем dovecot-antispam плагин
# cd /usr/ports/mail/dovecot2-antispam-plugin/ # make install clean |
Конфигурационный файл dovecot-а второй версии в отличии от первого разбит на много отдельных конфигов, относящихся к настройке того или иного сервиса, мне это показалось удобным, поэтому наберемся терпения и приступим к их редактированию (все они лежат в одном каталоге /usr/local/etc/dovecot, комментарии будут минимальны, т.к. они хорошо задокументированы в самих файлах, здесь на сайте и на оф. вики). Настоятельно рекомендую не копипастить, т.к. многие закоментированные опции не приведены здесь, отображено только то, что я включил в конфиги, поэтому вдумчиво редактируйте свои конфиги по умолчанию:
Основной конфигурационный файл /usr/local/etc/dovecot/dovecot.conf
|
Файл подключения к базе данных /usr/local/etc/dovecot/dovecot-sql.conf.ext
|
Файл словаря SQL квот /usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
|
Файл аутентификации /usr/local/etc/dovecot/conf.d/10-auth.conf
|
Файл /usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
|
Файл настройки логирования /usr/local/etc/dovecot/conf.d/10-logging.conf
|
Файл путей к ящикам и пространства имен /usr/local/etc/dovecot/conf.d/10-mail.conf
|
Файл сервисов и сокетов /usr/local/etc/dovecot/conf.d/10-master.conf
|
Файл настройки SSL /usr/local/etc/dovecot/conf.d/10-ssl.conf
|
Файл мастер сокета аутентификации для доставки корреспонденции /usr/local/etc/dovecot/conf.d/15-lda.conf
|
Файл протокола IMAP /usr/local/etc/dovecot/conf.d/20-imap.conf
|
Файл параметров ManageSieve /usr/local/etc/dovecot/conf.d/20-managesieve.conf
|
Файл протокола POP3 /usr/local/etc/dovecot/conf.d/20-pop3.conf
|
Файл настройки квот /usr/local/etc/dovecot/conf.d/90-quota.conf
|
Файл настройки фильтров Sieve /usr/local/etc/dovecot/conf.d/90-sieve.conf
|
Файл настройки плагинов, в нашем случае настраиваем подключенный dovecot-antispam (также в этом файле можно настроить любой другой подключаемый плагин) /usr/local/etc/dovecot/conf.d/90-plugin.conf
|
Содержимое скрипта /usr/local/etc/dovecot/overquoted для отправки квот, указанного в конфиге /usr/local/etc/dovecot/conf.d/10-master.conf
|
Ну вот вроде бы и закончили с конфигами Dovecot-а, аж не вериться :) Теперь для автостарта довекота добавляем в rc.conf
# echo 'dovecot_enable="YES"' >> /etc/rc.conf |
Запускаем и проверяем
# /usr/local/etc/rc.d/dovecot start # sockstat -4 -l | grep dovecot root dovecot 42460 15 tcp4 *:4190 *:* root dovecot 42460 24 tcp4 *:110 *:* root dovecot 42460 25 tcp4 *:995 *:* root dovecot 42460 32 tcp4 *:143 *:* root dovecot 42460 33 tcp4 *:993 *:* |
Итак, проверим работу dovecot на примере POP3
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK IMAP server ready. user username@domain.com.ua +OK pass yoursecretpass +OK Logged in. stat +OK 3006 380337139 quit +OK Logging out. Connection closed by foreign host. |
Если что-то пошло не так, смотрим лог tail -f /var/log/dovecot/mainlog и исправляем ошибки.
Во время настройки DSPAM столкнулся с фичей нехватки прав на бинарник DSPAM и его конфигурационный файл после установки. По умолчанию в файле Makeconf порта DSPAM указаны параметры сборки с владельцем root, когда я первый раз установил порт, то напролося на кучу ошибок в логах Dovecot-a о нехватке прав на запуск DSPAM. Поэтому, чтобы избежать не нужных нам проблем, перед установкой добавьте в /etc/make.conf следующее
|
Саму установку и настройку DSPAM я делал по этой статье
Установку и настройку EXIM с пользователями в MySQL описывать не буду, т.к. здесь есть множество статей на эту тему, остановлюсь только на настройке роутеров и транспорта для Dovecot, DSPAM а также аутентификации CRAM-MD5.
Роутеры проверки спама, необходимо вставить перед роутером локальной доставки Dovecot, это очень важно! Итак правим конфиг екзима /usr/local/etc/exim/configure
В секции begin routers после роутера system_aliases добавляем следующее:
|
В секции begin transports порядок добавления не важен, просто вставляем:
|
Аутентификация у меня работает через Dovecot, правим секцию begin authenticators
|
Настройка Exim закончена.
Теперь, к примеру, если Вы получили письмо, которое является заведомо спамом, но попало по ошибке фильтра во входящие, то чтобы переучить спамфильтр и сказать ему, что это письмо спамовое, достаточно просто переместить его в папку Спам(Junk) и после этого в логе соответствующего пользователя появиться запись свидетельствующая о переобучении спам-фильтра
# tail -f /var/db/dspam/data/username@domain.com.ua/username@domain.com.ua.log 1369209224 I spammail@pisem.net 519c7988278601581114498 dddddd Delivered <2afbf94cd4594c6f22610d8c18fc63cad334e4c2@mail.qip.ru> 1369209324 M <None Specified> 519c7988278601581114498 <None Specified> Retrained |
А если письмо снова вернуть во Входящие, то письмо будет считаться не спамом.
Пользователей в базе я создаю из веб-панели postfixadmin, оттуда пароли автоматически криптуются в CRAM-MD5. Есть одна важная особенность в конфиге postfixadmin, касающаяся именно второй версии Dovecot, это путь к бинарнику создания криптованого пароля для пользователя, в отличии от первой версии Dovecot используется другой бинарник с параметрами. Вот собственно параметры конфига, отвечающие за вышесказанное:
|
Аутентификацию по механизму CRAM-MD5 можно проверить из того же Roundcube, вот кусок лога довекот:
# tail -f /var/log/dovecot/mainlog May 24 13:48:59 auth: Debug: auth client connected (pid=42864) May 24 13:48:59 auth: Debug: client in: AUTH 1 CRAM-MD5 service=imap secured session=HWXci3TdfgBOLsbU lip=1.2.3.4 rip=1.2.3.4 lport=993 rport=10878 May 24 13:48:59 auth: Debug: client passdb out: CONT 1 PDI2NzU0ODY2Mjg3MTE0MjguMTM2OTM5MjUzOUBteHZtLm1hbmZyZWUua2lldi51YT4= May 24 13:48:59 auth: Debug: client in: CONT<hidden> May 24 13:48:59 auth-worker(42818): Debug: sql(username@domain.com.ua,1.2.3.4): query: SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = 'username@domain.com.ua' AND `active`='1' May 24 13:48:59 auth: Debug: client passdb out: OK 1 user=username@domain.com.ua May 24 13:48:59 auth: Debug: master in: REQUEST 3470262273 42863 1 a88e3cf4ba52caee8dae888e230985b6 May 24 13:48:59 auth: Debug: master userdb out: USER 3470262273 username@domain.com.ua home=/var/mail/exim/domain.com.ua/username@domain.com.ua/ uid=26 gid=26 quota=dict:storage=100000::proxy::sqlquota quota_rule=*:storage=102400000B May 24 13:48:59 auth-worker(42818): Debug: sql(username@domain.com.ua,1.2.3.4): SELECT CONCAT('/var/mail/exim/', `maildir`) AS `home`, 26 AS `uid`, 26 AS `gid`, concat('dict:storage=', CAST(ROUND(quota / 1024) AS CHAR), '::proxy::sqlquota') AS quota, CONCAT('*:storage=', CAST(quota AS CHAR), 'B') AS quota_rule FROM `mailbox` WHERE `username` = 'username@domain.com.ua' AND `active`='1' May 24 13:48:59 imap-login: Info: Login: user=<username@domain.com.ua>, method=CRAM-MD5, rip=1.2.3.4, lip=1.2.3.4, mpid=42866, TLS, session=<HWXci3TdfgBOLsbU> |
Как видно из лога все прошло без ошибок.
Переходя на новый сервер, необходимо переместить все пользовательские ящики, таким образом, чтобы мейлдиры после Courier-а лягли в структуру Dovecot, сразу начал читать оф. вики довекота http://wiki2.dovecot.org/Migration/Courier но процедура оказалась слишком монструозной и длительной. Я решил отказаться от такого метода и вспомнил про перловый скрипт imapsync, как оказалось не напрасно. Нагуглил красивое решение для массовой синхронизации всех почтовых ящиков, выдергивая в цикле логины и пароли пользователей из базы старого сервера (соединяться с базой можна по сети либо импортнуть ее на новый сервер под другим именем). На новом сервере перед синхронизацией все пользователи должны быть созданы предварительно либо скриптом, либо вручную, т.к. пароли в базу будут ложиться в криптованом виде. Я у себя создал вручную, по причине небольшого количества пользователей. Вот сам скрипт:
|
Тестовая синхронизация двух ящиков суммарным объемом 900мб заняла очень большое время - порядка 2 часов, поэтому почитав фак на страничке разработчика я добавил в строку синхронизации кеширование, отменил подсчет размера папок и изменил временный каталог для кэша в итоге кусок скрипта отвечающий за imapsync выглядит так:
$r_sync=`imapsync --host1 $server --user1 $user1 --password1 $m_pass --host2 $dbhost --user2 $user2 --password2 $m_pass` --authmech2 CRAM-MD5 --tmpdir /var/tmp --nofoldersizes --usecache; |
Вторичный запуск синхронизации рекомендуется запускать вместо --usecache с параметром --useuid - собственно для использования построенных индексов в кеше:
$r_sync=`imapsync --host1 $server --user1 $user1 --password1 $m_pass --host2 $dbhost --user2 $user2 --password2 $m_pass` --authmech2 CRAM-MD5 --tmpdir /var/tmp --nofoldersizes --useuid; |
Вот собственно и все, чем я хотел поделиться с общественностью, т.к. сам в свое время не нашел в едином месте материала объединяющего все моменты и нюансы настройки данной связки.
Используемые материалы:
http://wiki2.dovecot.org/
http://www.lissyara.su/
http://www.info-x.org
http://extmemory.blogspot.com/2009/10/imapsync.html
|
Олег М., 2013-09-20 в 15:43:59
Сегодня настраиваю по вашей инструкции сервер, не смотря на то что статья относительно недавняя и версия FreeBSD 9.1 тоже, очень много изменения в обновленных портах, особенно в Dovecot.
Хочу попросить автора дописать в статье как именно он устанавливал и настраивал неописанные выше порты, для опытных людей в этом нету особого смысла но для новичков вроде меня это важно. Очень удобно когда настраиваешь все по одному источнику, а не собираешь конструктор из кучи инструкций написанных разными людьми и для разных целей, после такого долго приходится искать где ошибка и как ее устранить.
Заранее спасибо и спасибо за уже написанную статью.
freeman_tnu, 2013-09-20 в 16:22:19
Какие именно порты Вас интересуют? т.к. Dovecot был собран с опциями по умолчанию, кроме включения mysql.
И лучше обсуждать это в форуме
Олег М., 2013-09-30 в 0:41:21
Добавь ссылку на полный конфиг Exim (хотя бы без описания) и на базу MySQL
freeman_tnu, 2013-09-30 в 11:21:44
У меня конфиг один в один как в этой статье и об этом я тут упомянул. База используется из postfixadmin(создается автоматически при установке админки из веб-странички), о чем я тоже тут писал. Единственное изменение конфига exim это добавление роутеров, транспорта dovecot и аутентификации, смотрите здесь я описал как и куда их вставлять. Просто я не вижу смысла плодить одинаковые статьи, у Лисяры в статье все описано досконально.
Олег М., 2013-10-09 в 3:13:02
Как правильно разрешить отправку почты удаленным пользователям? Провайдер закрывает 25 порт, 465 и 587 открыты.
freeman_tnu, 2013-10-09 в 11:12:39
настройте ssl в exim
http://forum.lissyara.su/viewtopic.php?f=20&t=3577&start=25#p249410
Олег М., 2013-10-25 в 2:22:20
freeman_tnu, будь так добр помоги уже довести до ума сервер раз уж я почти все настроил по твоей инструкции, мне деваться теперь некуда, теперь сервер обслуживает предприятие и довести его до ума я просто обязан. Ты же не бросишь меня на произвол :-) и так по порядку, начну с самого срочного.
1. DSPAM - строк обучения уже прошел, он принял более 1000 писем и я ему отправил свыше 250 спамовых писем на spam-321@домен.ua. Но он так и не отфильтровывает спам, при проверке выше указанным методом пишет что письмо не является спамом, хотя именно это письмо я ему в спам базу добавил. Во обработки почты в логи ничего не пишет, только когда вручную выполняю проверку.
Судя по письму он проверку выполняет:
Received: from mailnull by mail.домен.ua with spam-scanned (Exim 4.80.1 (FreeBSD))
Вот лог когда в IMAP попытался мышкой перетянуть спам в папку спама:
[code]
imap(mail-copy-mailbox@домен.ua): Debug: dspam error: ..2632 prefix=imap(mail-copy-mailbox@домен.ua):
Oct 25 01:18:25 imap: Error:
Oct 25 01:18:25 imap: Error:
Oct 25 01:18:25 imap(mail-copy-mailbox@домен.ua): Debug: dspam error: ..2632 executing /usr/local/bin/dspam failed: 13 (uid=26, gid=26)
Oct 25 01:18:25 imap: Error:
Oct 25 01:18:25 imap: Error:
[/code]
freeman_tnu, 2013-10-25 в 11:26:08
Олег М http://forum.lissyara.su/viewtopic.php?f=20&t=39436&p=352926#p352926
gyurza2000, 2013-12-11 в 2:17:12
Статья конечно прикладная и интересная, для меня как, впервые осваивающего DSPAM, и вообще, не профи в UNIXах, но, именно для новичка есть много нюансов.
Копипастом конфиг себе не закинешь - опечатки, ошибки...вобщем не всё заработает :)
command = где то написано в кавычках, а где то нет. Как правильно?
— %u - две чёрточки где то есть, а где то нет. А как правильно?
Но, в конечном итоге, всё вроде бы заработало. Спаибо огромное :)
freeman_tnu, 2013-12-11 в 13:24:00
gyurza2000
Я же в статье написал ;)
"Настоятельно рекомендую не копипастить, т.к. многие закоментированные опции не приведены здесь, отображено только то, что я включил в конфиги, поэтому вдумчиво редактируйте свои конфиги по умолчанию:" (с)
command = с кавычками и без кавычек работает, правильно оба варианта (читаем доку по конфигу экзима)
- %u смотрите в контексте параметров запуска обучения dspam-а и Вам все станет ясно.
gyurza2000, 2013-12-11 в 13:41:38
freeman_tnu,автор, раз уж Вы отвечаете, зайдите пжлст в ветку обсуждения данной статьи, там на 3й стр. описана моя проблема - дублирование входящих писем и отсутствие метки SPAM в письмах, перемещаемых в папку СПАМ. Может подскажите куда копать?
Aleksey77, 2018-04-17 в 16:09:24
Настройка квот!!!!
quota = dict:User quota::noenforcing:proxy::sqlquota
Параметр noenforcing нужно убирать, из за него квоты работают в режиме мониторинга, то есть реально квота на сервере не работает.
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [12 шт.]