ну
понеслося
почему то суровое молчание дает больше мотивации к действию чем сотни добрых слов и посылов на х
орошие страницы мануалов(Прежде, чем кричать что я - хулиган, выделите этот абзац)
поставил courier-imap но так и не добрался до конфигуряния - тут мне не ответили, а пошарившись по каким то сайтам в поисках простого решения, я полез в порты с криком
ХОЧУ IMAP!!!
там я наткнулся на порт
bincimap и чуть было его не поставил, но на сайте обнаружил слова, которые вселили ясность в мою бренную голову - <<Binc IMAP 1.2 is a Maildir only IMAP server (
no traditional mbox support).>>
ухты
так мне нужен не просто imap server а с поддержкой системных ящиков формата mbox
бежим в
гуглюком, вбиваем <<imap server mbox>> , жмем "Мне повезет!" и попадаем на
форум, где упоминается
dovecot мне он приглянулся почти полным отсутствием зависимостей
топаем обратно в порты и
смотрим что пишут
а пишут хорошо - дескать такой растакой хороший сервак, поддерживает такие растакие фичи, и еще
It supports Maildirs and mbox formats - то что надо.
обновляем порты
Код: Выделить всё
#csup -L 2 /usr/local/etc/ports-supfile -h `fastest_cvsup -Qcru`
ставим, идем конфигурять и молча поднимаем челюсть с пола
Код: Выделить всё
# ls -lh /usr/local/etc/dovecot.conf
-rw-r--r-- 1 root wheel 49K 3 янв 16:55 /usr/local/etc/dovecot.conf
с момента написания
статьи конфиг еще прибавил в весе (кстати, за статейку отдельное спасибо ув. тов. Лису)
подняв челюсть идем куда шли и там для начала рубим хвосты - на почту будет логиниться сам рут, так что не надо нам всяких нехороших товарищей снаружи
говорим
Код: Выделить всё
#cat /usr/local/etc/dovecot.conf
...
# слушать тока внутреннюю локалку и петлю
listen = 192.168.0.1 127.0.0.1
...
# откуда читать почту, где хранити индексы и проч
mail_location = mbox:~/mail:INBOX=/var/mail/%u:INDEX=/var/indexes/%
...
Указание localhost в параметре listen приведет к падению на запуске, если отключен IPv6
Кроме того, комментим блок авторизации pam и приводим блоки passwd к таком виду
Код: Выделить всё
passdb passwd {
# [blocking=yes] - See userdb passwd for explanation
#args =
}
Код: Выделить всё
userdb passwd {
# [blocking=yes] - By default the lookups are done in the main dovecot-auth
# process. This setting causes the lookups to be done in auth worker
# proceses. Useful with remote NSS lookups that may block.
# NOTE: Be sure to use this setting with nss_ldap or users might get
# logged in as each others!
# args = blocking=yes # комментируем эту строчку
}
и вскоре понимаем, что приехали. система
показывает нам палец
Код: Выделить всё
375 # Valid UID range for users, defaults to 500 and above. This is mostly
376 # to make sure that users can't log in as daemons or other system users.
377 # Note that denying root logins is hardcoded to dovecot binary and can't
378 # be done even if first_valid_uid is set to 0.
379 first_valid_uid = 1000
380 #last_valid_uid = 0
запрет на логин рута вшит в бинарник, а его не почешешь
ну и не надо! обойдусь! не очень то и хотелось!
Мы пойдем другим путем!
Код: Выделить всё
# cd /usr/ports/mail/dovecot
# make fetch extract patch
# du -hd1 work/dovecot-1.2.8/
24M work/dovecot-1.2.8/src
1,0M work/dovecot-1.2.8/doc
30M work/dovecot-1.2.8/
#cd work/dovecot-1.2.8/src
неприятно ну да ладно где наша не пропадала
grep и vim в руки и вперед
Код: Выделить всё
#grep -rin root ./work/dovecot-1.2.8/src | vim -
#vim ...
#grep -rin deny ./work/dovecot-1.2.8/src
....
за такими делами прошло какое то время
попутно прыгая по инету я наткнулся на еще одну
статейку
ну, дудку в зубы, барабан на шею, и я потопал в telnet, следя за логами
логино рутом вызвал отказ в авторизации и бурю эмоций в логах:
Код: Выделить всё
Jan 3 16:38:06 freebsp dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<root>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jan 3 16:38:32 freebsp dovecot: dovecot: User root not allowed to log in using UNIX UID 0 (root logins are never allowed)
Jan 3 16:38:32 freebsp dovecot: pop3-login: Internal login failure (auth failed, 1 attempts): user=<root>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Да это то что надо!!! ("более того, это ВСЕ что надо" - подумал я)
Код: Выделить всё
# grep -rn "UNIX UID" ./work/dovecot-1.2.8/src/
./work/dovecot-1.2.8/src/master/mail-process.c:122: i_error("User %s not allowed to log in using UNIX UID 0 "
./work/dovecot-1.2.8/src/master/mail-process.c:132: "UNIX UID %s%s (see http://wiki.dovecot.org/UserIds)",
./work/dovecot-1.2.8/src/master/mail-process.c:145: "UNIX UID %s%s (see %s in config file)",
# cat ./work/dovecot-1.2.8/src/master/mail-process.c
...
121 /*if (uid == 0) {
122 i_error("User %s not allowed to log in using UNIX UID 0 "
123 "(root logins are never allowed)", user);
124 return FALSE;
125 }//*/
...
я закомментил этот блок кода - судя по всему, именно отсюда исходила ругня. Теперь по идее руту разрешен логин в почту но сначала надо применить изменения - собрать сервак, посмтавить его и не забыть сделать бекап сделанных изменений
Код: Выделить всё
# pwd
/usr/ports/mail/dovecot
# cp work/dovecot-1.2.8/src/master/mail-process.c ./
# diff work/dovecot-1.2.8/src/master/mail-process.c mail-process.c >> patc1.diff
# make deinstall && meka install clean
# /usr/local/etc/rc.d/dovecot start
опять логинимся через телнет и орпять неудача - на это этот раз без объяснений(в тот раз выдавал ошибку авторизации)
в логах видим фатал
Код: Выделить всё
Jan 3 16:55:47 freebsp dovecot: pop3-login: Login: user=<root>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jan 3 16:55:47 freebsp dovecot: POP3(root): Fatal: Running as root isn't permitted
Jan 3 16:55:47 freebsp kernel: Jan 3 16:55:47 freebsp dovecot: POP3(root): Fatal: Running as root isn't permitted
я уже видел эти строки во время похода по исходникам. поэтому освежаем в памяти адрес и делаем грязное дело
Код: Выделить всё
# pwd
# pwd
/usr/ports/mail/dovecot
# grep -rn "isn't permitted" ./work/dovecot-1.2.8/src/
./work/dovecot-1.2.8/src/lib/restrict-access.c:336: i_fatal("Running as root isn't permitted");
./work/dovecot-1.2.8/src/lib/restrict-access.c:352: i_fatal("GID 0 isn't permitted");
# cat ./work/dovecot-1.2.8/src/lib/restrict-access.c
...
333 /* if (uid != 0 || disallow_root) {
334 if (setuid(0) == 0) {
335 if (uid == 0)
336 i_fatal("Running as root isn't permitted");
337 i_fatal("We couldn't drop root privileges");
338 }
339 }*/
...
# cp ./work/dovecot-1.2.8/src/lib/restrict-access.c ./
# cp -f mail-process.c work/dovecot-1.2.8/src/master/mail-process.c
# make deinstall && make install
# /usr/local/etc/rc.d/dovecot start
пробуем логиниться телнетом и опять неудача - только теперь ругается на то что наш уид слишком большой. решается просто
Код: Выделить всё
# grep first_ /usr/local/etc/dovecot.conf
# be done even if first_valid_uid is set to 0.
first_valid_uid = 0
first_valid_gid = 0
# telnet localhost 110
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user root
+OK
pass MyPass
+OK Logged in.
list
+OK 4702 messages:
...
.
quit
+OK Logging out.
Connection closed by foreign host.
почти все - голубятня стоит и пускает рута по pop3
пробуем imap
Код: Выделить всё
# telnet localhost 143 [/usr/ports/mail/dovecot]root@freebsp.homeip.net
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
LOGIN root MyPass
LOGIN BAD Error in IMAP command received by server.
LOGIN root@192.168.0.1 MyPass
LOGIN BAD Error in IMAP command received by server.
NOOP
NOOP BAD Error in IMAP command received by server.
странно. ругается на все. подозреваю, что дело в переводе строки, но точнее не копал. как что то решится - отпишусь.
PS надеюсь, кому то сие будет полезно/интересно
===================
как оказалось, клиент нормально подключается - аутглюк уже стянул всю почту и по pop3 и по imap