Снова Postfix (Dovecot + Postfix + Postfixadmin)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Kaz_n
Сообщения: 59

Снова Postfix

Сообщение Kaz_n »

Здравствуйте, на машине установлен Dovecot, PostfixAdmin и Postfix, не могу настроить сабж.
При отправке локальным(системным) пользователям письма доходят, при отправке от виртуальных выходит вот такой вот лог:

Код: Выделить всё

Aug 25 23:33:12 forvit postfix/smtpd[10114]: connect from dtt.kz[192.168.1.33]
Aug 25 23:33:36 forvit postfix/smtpd[10114]: 433D13D6DE: client=dtt.kz[192.168.1.33]
Aug 25 23:33:52 forvit postfix/cleanup[10121]: 433D13D6DE: message-id=<20080825173336.433D13D6DE@forvit.kz>
Aug 25 23:33:52 forvit postfix/qmgr[9776]: 433D13D6DE: from=<vitaliy@dtt.kz>, size=323, nrcpt=1 (queue active)
Aug 25 23:33:52 forvit postfix/pipe[10123]: 433D13D6DE: to=<rooot@dtt.kz>, relay=dovecot, delay=31, delays=31/0.01/0/0.05, dsn=4.3.0, status=deferred (temporary failure)
Aug 25 23:33:54 forvit postfix/smtpd[10114]: disconnect from dtt.kz[192.168.1.33]


В Dovecot соответственно пусто, авторизация проводится нормально.

Конфиг Postfix:

Код: Выделить всё

alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 4
debug_peer_list = 127.0.0.1
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
message_size_limit = 5242880
mydestination = $myhostname localhost localhost.$mydomain
mydomain = forvit.kz
myhostname = forvit.kz
mynetworks = 127.0.0.0/8, 192.168.0.0/16
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
recipient_delimiter = +
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = no
smtpd_timeout = 120s
unknown_local_recipient_reject_code = 450
virtual_alias_maps = mysql:$config_directory/mysql_virtual_aliases_maps.cf
virtual_gid_maps = 500
virtual_mailbox_base = /var/spool/vmail
virtual_mailbox_domains = mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 500
virtual_transport = dovecot
virtual_uid_maps = 500


Система Mandriva 2008, все из пакетов
Если нужно, могу выложить конф. Dovecot
Подскажите пожалуйста в чем может быть проблема.
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Снова Postfix

Сообщение vr13 »

Kaz_n писал(а):
25.08.2008 22:08
Подскажите пожалуйста в чем может быть проблема.

проблема в том, что postfix не может выполнить доставку (с идентификацией виртуального пользователя в него все в порядке, а доставить - не может). попробуйте посмотреть тут в разделе документации. есть куча конфигураций в т.ч очень похожих не вашу
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

Думаю я нашел свою проблему.
dovecot.log:

Код: Выделить всё

 :crazy:Fatal: opendir(/usr/lib/dovecot/lda) failed: No such file or directory


LDA куда-то пропал, есть только :
[root@mail]# locate lda|grep dovecot
/usr/local/lib/dovecot/lda
/usr/local/lib/dovecot/lda/lib01_acl_plugin.so
/usr/local/lib/dovecot/lda/lib10_quota_plugin.so
/usr/local/lib/dovecot/lda/lib11_trash_plugin.so
/usr/local/lib/dovecot/lda/lib20_convert_plugin.so
/usr/local/lib/dovecot/lda/lib20_mail_log_plugin.so
/usr/local/lib/dovecot/lda/lib90_cmusieve_plugin.a
/usr/local/lib/dovecot/lda/lib90_cmusieve_plugin.la
/usr/local/lib/dovecot/lda/lib90_cmusieve_plugin.so
/usr/share/doc/dovecot/dovecot-ldap-example.conf
/usr/share/dovecot/lda
/usr/share/dovecot/lda/lib01_acl_plugin.so
/usr/share/dovecot/lda/lib10_quota_plugin.so
/usr/share/dovecot/lda/lib11_trash_plugin.so
/usr/share/dovecot/lda/lib20_convert_plugin.so
/usr/share/dovecot/lda/lib20_mail_log_plugin.so

Наверное глупый вопрос, но возможно что его нужно самомоу как-то доустановить или же переустанавливать Dovecot?
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

более точный лог:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 26 08:25:35 Fatal: opendir(/usr/lib/dovecot/lda) failed: No such file or directory
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Снова Postfix

Сообщение vr13 »

Kaz_n писал(а):
26.08.2008 06:15
Наверное глупый вопрос, но возможно что его нужно самомоу как-то доустановить или же переустанавливать Dovecot?

не нужно, это все конфигурация
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

Разобрался с

Kaz_n писал(а):
26.08.2008 06:40

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 26 08:25:35 Fatal: opendir(/usr/lib/dovecot/lda) failed: No such file or directory


Виноваты были пути к файлам auth-master и lda в dovecot

Теперь дело обстоит так:

юзер Dovecot имеет 83 uid gid 12 (mail) home=/var/spool/vmail
Postfix - 82 uid gid 109(postfix) попутно входя в группы postdrop и mail

если в dovecot.conf стоит
first_falid_uid = 83
first_falid_gid = 12

main.cf
virtual_uid_maps = 83
virtual_gid_maps = 12

Довекот при аутентификации выводит ошибку
лог:

Код: Выделить всё

dovecot: Aug 27 08:35:46 Error: Logins with login process UID 83 (user vitaliy@dtt.kz) not permitted (see login_user in config file).


в конфиге соит параметр
login_user = dovecot

при отправке сообщения dovecot-deliver.log:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Error: Per-user script path is unknown. See http://wiki.dovecot.org/LDA/Sieve#location


dovecot.log:

Код: Выделить всё

[code]
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: Loading modules from directory: /usr/local/lib/dovecot/lda
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: Module loaded: /usr/local/lib/dovecot/lda/lib90_cmusieve_plugin.so
dovecot: Aug 27 08:38:29 Info: auth(default): master in: USER   1       vitaliy@dtt.kz  service=deliver
dovecot: Aug 27 08:38:29 Info: auth-worker(default): sql(vitaliy@dtt.kz): SELECT maildir, 83 as uid, 12 as gid FROM mailbox WHERE username = 'vitaliy@dtt.kz' and active = '1'
dovecot: Aug 27 08:38:29 Info: auth(default): master out: USER  1       vitaliy@dtt.kz  maildir=vitaliy@dtt.kz/ uid=83  gid=12
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: auth input: vitaliy@dtt.kz
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: auth input: maildir=vitaliy@dtt.kz/
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: auth input: uid=83
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: auth input: gid=12
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: maildir: data=/var/spool/vmail/dtt.kz/vitaliy@dtt.kz
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: maildir: root=/var/spool/vmail/dtt.kz/vitaliy@dtt.kz, index=/var/spool/vmail/dtt.kz/vitaliy@dtt.kz, control=, inbox=
deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Info: msgid=<20080826183854.CAA9C3D6C7@forvit.kz>: saved mail to INBOX
[code]

Postfix:

Код: Выделить всё

Aug 27 08:38:29 forvit postfix/pickup[7961]: 220113D6E3: uid=82 from=<rooot@dtt.kz> orig_id=16BCD3D6E0
Aug 27 08:38:29 forvit postfix/cleanup[8116]: 220113D6E3: message-id=<20080826183854.CAA9C3D6C7@forvit.kz>
Aug 27 08:38:29 forvit postfix/qmgr[7963]: 220113D6E3: from=<rooot@dtt.kz>, size=954, nrcpt=1 (queue active)
Aug 27 08:38:29 forvit postfix/pipe[8119]: 220113D6E3: to=<vitaliy@dtt.kz>, relay=dovecot, delay=28787, delays=28787/0.03/0/0.07, dsn=2.0.0, status=sent (delivered via dovecot service)
Aug 27 08:38:29 forvit postfix/qmgr[7963]: 220113D6E3: removed


Т.е. как бы доставлено, но pop3 не авторизуется.

Если же устанвить в dovecot.conf
first_falid_uid = 82
first_falid_gid = 12

и dovecot-sql.conf соотетвественно поменять в запросе на "82 as uid"
то аутентификация проходит успешно, но вот в логе dovecot-deliver.log выходит следуещее:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 27 08:32:29 Fatal: setuid(82) failed: Operation not permitted


Вот такой вот расклад, голову скоро сломаю. Может я что-то упустил, подскажите знающие.
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Снова Postfix

Сообщение vr13 »

покажите конфигурацию dovecot, особенно строки начинающиеся с auth
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

protocols = pop3
protocol pop3 {
listen = *:110
}
disable_plaintext_auth = no
ssl_disable = yes
login_user = dovecot
mail_location = maildir:/var/spool/vmail/%d/%u
mail_extra_groups = mail
mail_full_filesystem_access = no
first_valid_uid = 83
#last_valid_uid = 83
first_valid_gid = 12
#last_valid_gid = 0
protocol lda {
auth_socket_path = /var/lib/run/dovecot/auth-master
}
auth_executable = /usr/lib/dovecot/dovecot-auth
auth default {
mechanisms = plain login cram-md5
user = nobody
master {
path = /var/lib/run/dovecot/auth-master
mode = 0660
# Default user/group is the one who started dovecot-auth (root)
user = dovecot
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = mail
}
}
}

И прикрепил полный конфиг если понадобится
У вас нет необходимых прав для просмотра вложений в этом сообщении.
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Снова Postfix

Сообщение vr13 »

Kaz_n писал(а):
27.08.2008 06:36
юзер Dovecot имеет 83 uid gid 12 (mail) home=/var/spool/vmail
Postfix - 82 uid gid 109(postfix) попутно входя в группы postdrop и mail

если в dovecot.conf стоит
first_falid_uid = 83
first_falid_gid = 12

main.cf
virtual_uid_maps = 83
virtual_gid_maps = 12

Довекот при аутентификации выводит ошибку
лог:

Код: Выделить всё

dovecot: Aug 27 08:35:46 Error: Logins with login process UID 83 (user vitaliy@dtt.kz) not permitted (see login_user in config file).


это как раз понятно: вы ограничиваете юзеров, которые могут подключаться к dovecot, поэтому postfix с uid<83 не может выполнить доставку. а postfix как раз имеет право доставлять (о чем говорится у вас в секции auth конфигурации dovecot). замечу, что виртуальным пользователям это никакого отношения не имеет. поэтому можно эти строки вообще убрать для начала: root'ом аутентифицироваться в dovecot нельзя по-умолчанию, а остальное врядли сумеет сделать что-нить плохое :)

в конфиге соит параметр
login_user = dovecot


это не имеет отношения к проблеме: данный параметр лишь говорит, под каким идентификатором будет на самом деле выполняться dovecot (запускаете же вы dovecot из-под root)

при отправке сообщения dovecot-deliver.log:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 27 08:38:29 Error: Per-user script path is unknown. See http://wiki.dovecot.org/LDA/Sieve#location


уберите из конфигурации лишнее (plugins)

...
и dovecot-sql.conf соотетвественно поменять в запросе на "82 as uid"
то аутентификация проходит успешно, но вот в логе dovecot-deliver.log выходит следуещее:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 27 08:32:29 Fatal: setuid(82) failed: Operation not permitted


думаю, что проблема в "соответственно поменять на 82": попробуйте этого не делать: суть следующая вы pop-авторизуетесь посредством sql. из таблиц вытаскиваются данные для авторизации виртуальных пользователей (хеш пароля, идлентификатор), а в качестве констант (83 as uid) получаете реальный uid для процесса, который выполняет авторизацию - виртуальных пользователей много, а dovecot (который авторизует - один).
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

разобрался с user-ами. Прочитал в man что для нормальной работы требуется 3 (root, dovecot и еще один для хранение почты)
Добавил виртуального пользователя vmail, uid = 501 c группой mail(12), домашний каталог /var/vmail

изменил параметры в dovecot.conf
first_falid_uid = 501
first_falid_gid = 12
#
master {
path = /var/lib/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = mail
}


main.cf
virtual_minimum_uid = 501
virtual_uid_maps = static:501
virtual_gid_maps = static:12

Почта проверяется корректно, если отправить например через echo "Text massage"|/path/to/file/deliver -d email, письмо приходит и я его вижу
Но при отправке с postfix
в dovecot.log

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 29 08:19:24 Info: auth input: vitaliy@dtt.kz
deliver(vitaliy@dtt.kz): Aug 29 08:19:24 Info: auth input: maildir=vitaliy@dtt.kz/
deliver(vitaliy@dtt.kz): Aug 29 08:19:24 Info: auth input: uid=501
deliver(vitaliy@dtt.kz): Aug 29 08:19:24 Info: auth input: gid=12
deliver(vitaliy@dtt.kz): Aug 29 08:29:24 Info: Loading modules from directory: /usr/local/lib/dovecot/lda
deliver(vitaliy@dtt.kz): Aug 29 08:29:24 Info: Module loaded: /usr/local/lib/dovecot/lda/lib90_cmusieve_plugin.so
dovecot: Aug 29 08:29:24 Info: auth(default): master in: USER   1       vitaliy@dtt.kz  service=deliver
dovecot: Aug 29 08:29:24 Info: auth-worker(default): sql(vitaliy@dtt.kz): SELECT maildir, 501 as uid, 12 as gid FROM mailbox WHERE username = 'vitaliy@dtt.kz' and active = '1'
dovecot: Aug 29 08:29:24 Info: auth(default): master out: USER  1       vitaliy@dtt.kz  maildir=vitaliy@dtt.kz/ uid=501 gid=12


ошибка в dovecot-deliver.log:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 29 08:29:24 Fatal: setuid(501) failed: Operation not permitted


То ли postfix не отправляет сообщения от виртуала с uid 501 или с правами на какие-то файлы не так?
Вобщем кажется что истина где-то рядом, но не могу за нее ухватиться

PS я наверное теперь могу претендовать на самого "умного" админа в мире))
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
vr13
Сообщения: 887
ОС: gentoo

Re: Снова Postfix

Сообщение vr13 »

Kaz_n писал(а):
29.08.2008 06:24

Код: Выделить всё

dovecot: Aug 29 08:29:24 Info: auth-worker(default): sql(vitaliy@dtt.kz): SELECT maildir, 501 as uid, 12 as gid FROM mailbox WHERE username = 'vitaliy@dtt.kz' and active = '1'
dovecot: Aug 29 08:29:24 Info: auth(default): master out: USER  1       vitaliy@dtt.kz  maildir=vitaliy@dtt.kz/ uid=501 gid=12


ошибка в dovecot-deliver.log:

Код: Выделить всё

deliver(vitaliy@dtt.kz): Aug 29 08:29:24 Fatal: setuid(501) failed: Operation not permitted


То ли postfix не отправляет сообщения от виртуала с uid 501 или с правами на какие-то файлы не так?
Вобщем кажется что истина где-то рядом, но не могу за нее ухватиться


писалось же вчера: пользователи, кому доставляется почта у вас - виртуальные, поэтому delivery должен выполняться от имени реального владельца ящиков. mysql возвращает путь к ящику виртуального пользователя, реально же ящик (каталог maildir со всем содержимым) принадлежит - системному, от имени которого и должен выполняться delivery
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Снова Postfix

Сообщение Kaz_n »

Вроде разобрался немного, дал права postfix, письма стали доставляться.
Извиняюсь за тупизм и благодарю!
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали: