Войти

Показать полную графическую версию : Не получается запустить Dovecot


WebCode
22-05-2005, 14:01
Здравствуйте...

Взялся за установку Dovecot'a, нашел пору манов, начал конфигурировать (из под root'a):


# ./configure --prefix=/usr/local/dovecot \
--with-ssl=openssl \
--with-mysql
# make
# make install


Все прошло гладко, перешел к настройке (файл DOVECOT.CONF):


base_dir = /usr/local/dovecot/
protocols = imaps pop3s imap pop3
ssl_cert_file = /etc/ssl/certs/imapd.pem
ssl_key_file = /etc/ssl/certs/imapd.pem
login = imap
login_executable = /usr/local/dovecot/libexec/dovecot/imap-login
login_user = dovecot
login = pop3
login_executable = /usr/local/dovecot/libexec/dovecot/pop3-login
mail_extra_groups = dovecot
default_mail_env = maildir:/opt/home/%d/mail/%n/
imap_executable = /usr/local/dovecot/libexec/dovecot/imap
pop3_executable = /usr/local/dovecot/libexec/dovecot/pop3
auth = default
auth_mechanisms = plain
auth_userdb = mysql /usr/local/dovecot/etc/mysql.conf
auth_passdb = mysql /usr/local/dovecot/etc/mysql.conf
first_valid_uid = 1
auth_user = dovecot
auth_verbose = yes


Перехожу к настройке /usr/local/dovecot/etc/mysql.conf, т.к. хочу хранить учетные записи в MySQL:


db_unix_socket = /tmp/mysql.sock
db = dovecot
db_user = dovecot
db_passwd = dovecot
db_client_flags = 0
default_pass_scheme = PLAIN
password_query = SELECT password FROM users WHERE login = '%n' AND domain = '%d' AND status = '1'
user_query = SELECT uid, gid FROM users WHERE login = '%n' AND domain = '%d'


Перешел к созданию сертификата SSL, прочел, что нежно редактировать файл DOVECOT-OPENSSL.CNF:


[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=RU
ST=/opt/home/test.ru
L=Sevastopol
O=/opt/home/test.ru
OU=POP3 IMAP server
CN=test.ru
emailAddress=postmaster@test.ru
[ cert_type ]
nsCertType = server



# sh mkcert.sh
Generating a 1024 bit RSA private key
.............++++++
....++++++
writing new private key to '/etc/ssl/private/imapd.pem'
-----

subject= /C=RU/ST=/opt/home/test.ru/L=Sevastopol/O=/opt/home/test.ru/OU=POP3 IMAP server/CN=test.ru/emailAddress=postmaster@test.ru
MD5 Fingerprint=E9:F1:15:3A:E3:D7:CE:30:4D:9F:A5:CE:97:7B:48:64


В результате всего этого:


# cd /usr/local/dovecot/sbin
# ./dovecot -c /usr/local/dovecot/etc/dovecot.conf
# ps -ax | grep dovecot
18349 pts/1 S 0:00 grep dovecot
# telnet localhost 110
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
#


Он не запускается!!! Подскажите, пожалуйста, что я делаю не так? В чем ошибка?

ruslandh
22-05-2005, 15:04
А что этот dovercot делает ?

Можно через strace посмотреть, что он вываливается.

WebCode
23-05-2005, 08:00
А что этот dovercot делает ?

Это POP3/IMAP сервер...

Я проверил на апаче:
# strace httpd

Довольно много информации... Как мне этим воспользоваться, я не очень понимаю...

ruslandh
23-05-2005, 08:12
Ну,
strace dovercot > /tmp/err_dovercot.txt
Ну а дальше анализировать лог err_dovercot.txt особкнно перед вываливанием (tail -20 /tmp/err_dovercot.txt )

WebCode
23-05-2005, 08:21
# strace /usr/local/dovecot/sbin/dovecot

Полученный данные просматривал в ручную, обнаружил интересную вешь:
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)

У меня нет ld.so.preload... Что это за библиотека? Где её можно найти?

А вот что мне дало tail -20:

listen(7, 8) = 0
fcntl64(7, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl64(7, F_GETFD) = 0
fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 8
setsockopt(8, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(8, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
bind(8, {sa_family=AF_INET, sin_port=htons(110), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
getsockname(8, {sa_family=AF_INET, sin_port=htons(110), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
listen(8, 8) = 0
fcntl64(8, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(8, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl64(8, F_GETFD) = 0
fcntl64(8, F_SETFD, FD_CLOEXEC) = 0
dup2(4, 0) = 0
dup2(4, 1) = 1
dup2(4, 2) = 2
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xbf50d4a8) = 1561
exit_group(0)

ruslandh
23-05-2005, 08:48
1 /etc/ld.so.preload у меня тоже нет, есть /etc/ld.so.conf, в котором прописаны пути до динамических библиотек в системе.
2 Как видно по strace происходит порождение нового child процесса, после которого почти сразу идёт exit_group - команда по выключению всех процессов программы. Можно предположить, что второе является следствие первого, т.е. какой-то важный child процесс не смог запуститься.
Теперь надо по исходнику программы смотреть что это могло быть.

WebCode
23-05-2005, 23:33
ruslandh, спасибо, но в исходниках я не разберусь :( Я попробою другой сервак взять...




© OSzone.net 2001-2012