Пытаюсь настроить связку postfix, dovecot, postfixadmin, mysql.Установил все по статье:
Строим почтовую систему(postfix, dovecot, postfixadmin) - часть первая, установка PostfixAdmin
http://www.hilik.org.ua/я│я┌я─п╬п╦п╪-п©п╬я┤я┌п╬п╡я┐я▌-я│п╦я│я┌п╣п╪я┐postfix-dovecot-postfixadmin-я┤п╟я│я┌я▄-п©/
конфиг postfix-а, main.cf:queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
myhostname = mail.blabla.ru
mydomain = blabla.ru
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains =
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.0/8 192.168.1.0/24
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = no
#Корневая директория для клиентских почтовых ящиков
virtual_mailbox_base = /usr/mail/
#Путь к файлу настроек подключения к MySQL для получения виртуальных алиасов
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
#Путь к файлу настроек подключения к MySQL для получения виртуальных доменов
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
#Путь к файлу настроек подключения к MySQL для получения виртуальных пользователей
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
#Работать dovecot будет от nobody
virtual_minimum_uid = 65534
virtual_uid_maps = static:65534
virtual_gid_maps = static:65534
#Для доставки в локальные почтовые ящики будем использовать доставщик dovecота
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
#Включаем smtp авторизацию через dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#Устанавливаем разрешения smtpd
smtpd_recipient_restrictions =
#локальная сеть
permit_mynetworks
#smtp авторизация
permit_sasl_authenticated
#всем остальным релай запрещаем
reject_unauth_destination
Конфиг dovecot.conf:#Директория для работы Dovecot
base_dir = /var/run/dovecot
#Протоколы по которым будет работать Dovecot
protocols = imap pop3
#Разрешаем plain text авторизацию
disable_plaintext_auth = no
#Месторасположение пользовательской почты %d - имя домена, %u - емайл пользователя
mail_location = maildir:/usr/mail/%d/%u/
mail_privileged_group = mail
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_gid = 65534
maildir_copy_with_hardlinks = yes
ssl_disable = yes
auth_debug_passwords=yes
#Описание работы IMAP и POP3 протоколов
protocol imap {
login_greeting_capability = yes
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
pop3_uidl_format = XuXv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
#Доставщик клиентской почты
protocol lda {
postmaster_address = postmaster@blalbla.ru
sendmail_path = /usr/sbin/sendmail
}#Секция отвечающая за авторизацию пользователей
auth_username_format = %Lu
auth default {
mechanisms = plain login cram-md5 digest-md5
#mechanisms = plain login cram-md5
#Авторизация через MySQL
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}userdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
#Пользователь от имени которого dovecot выполняет действия с почтой
user = nobody
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0666
}
client {
#Эти настройки отвечают за авторизацию клиентов, в нашей ситуации клиентом выступает Postfix
#когда отвечает на SMTP AUTH
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}dict {
}
plugin {
}
все запускается без ошибок. Затем пробую протестить телнетом.
[root@sspmail /usr/ports/mail/postfix22/postfix-2.2.12]# telnet localhost 25
Trying 127.0.0.1...
Connected to mail.blabla.ru.
Escape character is '^]'.
220 mail.blabla.ru ESMTP Postfix
ehlo s
250- mail.blabla.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250 8BITMIME
auth plain dGVzdC5ydQB0ZXN0LnJ1AHRlc3Q=
535 Error: authentication failed
auth plain получаю так:perl -MMIME::Base64 -e 'print encode_base64("test@blabla.ru\0test@blabla.ru\0test");'
Пользователь test@blabla.ru в базе есть.
В логах ошибка:May 21 02:51:13 sspmail postfix/smtpd[21325]: connect from localhost.blabla.ru [127.0.0.1]
May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: no user in db
May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: no user in db
May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: Password verification failed
May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: localhost.blabla.ru[127.0.0.1]: SASL plain authentication failed
Хотя по pop3 все замечательно пускает, авторизует, почта забирается. Такое ощущение что SASL не использует dovecot. Кто нибудь может добрым словом помочь?
>[оверквотинг удален]
>db
>May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: no user in
>db
>May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: Password verification failed
>
>May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: localhost.blabla.ru[127.0.0.1]: SASL plain authentication failed
>
>
>Хотя по pop3 все замечательно пускает, авторизует, почта забирается. Такое ощущение что
>SASL не использует dovecot. Кто нибудь может добрым словом помочь?Покажите логи dovecot auth.
>[оверквотинг удален]
>>db
>>May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: SASL authentication failure: Password verification failed
>>
>>May 21 02:51:36 sspmail postfix/smtpd[21325]: warning: localhost.blabla.ru[127.0.0.1]: SASL plain authentication failed
>>
>>
>>Хотя по pop3 все замечательно пускает, авторизует, почта забирается. Такое ощущение что
>>SASL не использует dovecot. Кто нибудь может добрым словом помочь?
>
>Покажите логи dovecot auth.Лог при попытке отправить через MS Outlook с опцией: SMTP серверу требуется проверка подлинности. Аналогично серверу входящей почты.
[root@mail ~]# tail -f /var/log/dovecot.logdovecot: May 21 04:55:26 Info: auth(default): client in: AUTH 1 DIGEST-MD5 service=pop3 lip=192.168.232.248 rip=192.168.232.51 lport=110 rport=54717 resp=
dovecot: May 21 04:55:26 Info: auth(default): client out: CONT 1 cmVhbG09IiIsbm9uY2U9IkxpWHZxYSs3R3lwM2U0dERnNUlLL1E9PSIscW9wPSJhdXRoIixjaGFyc2V0PSJ1dGYtOCIsYWxnb3JpdGhtPSJtZDUtc2VzcyI=
dovecot: May 21 04:55:26 Info: auth(default): client in: CONT 1 dXNlcm5hbWU9InRlc3QiLHJlYWxtPSJmc3NwMjQucnUiLG5vbmNlPSJMaVh2cWErN0d5cDNlNHREZzVJSy9RPT0iLGRpZ2VzdC11cmk9InBvcC8xOTIuMTY4LjIzMi4yNDgiLGNub25jZT0iOTJjNTE1OGM1OGUzZjk0ZGJmMjViYmMzYmY0NzQ4OGIiLG5jPTAwMDAwMDAxLHJlc3BvbnNlPTg3ZTA5OWMwMTMwN2JjY2JkZjllNzc1Y2UwNjllZjI3LHFvcD1hdXRoLGNoYXJzZXQ9dXRmLTg=
dovecot: May 21 04:55:26 Info: auth(default): digest-md5(?,192.168.232.51): Invalid realm: blabla.ru
dovecot: May 21 04:55:27 Info: auth(default): new auth connection: pid=22205
dovecot: May 21 04:55:28 Info: auth(default): client out: FAIL 1
dovecot: May 21 04:55:28 Info: auth(default): client in: AUTH 2 PLAIN service=pop3 lip=192.168.232.248 rip=192.168.232.51 lport=110 rport=54717 resp=AHRlc3RAZnNzcDI0LnJ1AHRlc3Q=
dovecot: May 21 04:55:28 Info: auth-worker(default): sql(test@blabla.ru,192.168.232.51): query: SELECT password FROM mailbox WHERE username = 'test@blabla.ru'
dovecot: May 21 04:55:28 Info: auth(default): client out: OK 2 user=test@blabla.ru
dovecot: May 21 04:55:28 Info: auth(default): master in: REQUEST 4 22092 2
dovecot: May 21 04:55:28 Info: auth-worker(default): sql(test@blabla.ru,192.168.232.51): SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = 'test@blabla.ru'
dovecot: May 21 04:55:28 Info: auth(default): master out: USER 4 test@blabla.ru maildir=test@blabla.ru/ uid=65534 gid=65534
dovecot: May 21 04:55:28 Info: pop3-login: Login: user=<test@blabla.ru>, method=PLAIN, rip=192.168.232.51, lip=192.168.232.248
dovecot: May 21 04:55:28 Info: POP3(test@blabla.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
[root@mail ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.blabla.ru.
Escape character is '^]'.
220 mail.blabla.ru ESMTP Postfix
ehlo mail
250-mail.blabla.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdEBmc3NwMjQucnU=
334 UGFzc3dvcmQ6
dGVzdA==
535 Error: authentication failed
Имя и пасс сгенерено таким скриптом:<?php
print base64_encode("test@blabla.ru");
print "\n";
print base64_encode("test");
print "\n";
?>При тестировании телнетом, логи dovecot пустые.
Пересобрал postfix с такими опциями:make makefiles \
'CCARGS=-DDEF_SERVER_SASL_TYPE=\"dovecot\" -DHAS_MYSQL -I/usr/local/include/mysql -DUSE_SASL_AUTH -I/usr/local/include/sasl' \
'AUXLIBS=-L/usr/local/lib/mysql -lmysqlclient -lz -lm -L/usr/local/lib -R/usr/local/lib -lsasl2'Добавив: DUSE_SASL_AUTH
заходим телнетом:
Connected to localhost.blabla.ru.
Escape character is '^]'.
220 mail.blabla.ru ESMTP Postfix
ehlo fds
250-mail.blabla.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH NTLM LOGIN PLAIN GSSAPI OTP DIGEST-MD5 CRAM-MD5
250 8BITMIME
auth plain
334
dGVzdC5ydQB0ZXN0LnJ1AHRlc3Q=
535 Error: authentication failed
quit
221 Bye
Connection closed by foreign host.auth login аналогично не работает.
Логи(tail -f /var/log/maillog):
May 21 06:30:37 mail postfix/smtpd[34105]: connect from localhost.blabla.ru[127.0.0.1]
May 21 06:31:14 mail postfix/smtpd[34105]: warning: SASL authentication failure: no user in db
May 21 06:31:14 mail postfix/smtpd[34105]: warning: SASL authentication failure: no user in db
May 21 06:31:14 mail postfix/smtpd[34105]: warning: SASL authentication failure: Password verification failed
May 21 06:31:14 mail postfix/smtpd[34105]: warning: localhost.blabla.ru[127.0.0.1]: SASL plain authentication failed
May 21 06:32:47 pmail postfix/smtpd[34105]: disconnect from localhost.blabla.ru[127.0.0.1]а /var/log/dovecot.log пустой.
Все!!! Допер! Надо было установить последнюю версию postfix-а 2.6 а не та что с портов тянулась. Теперь postconf -a говорит dovecot и:Escape character is '^]'.
220 mail.blabla.ru ESMTP Postfix
ehlo dsds
250-mail.blabla.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dGVzdEBmc3NwMjQucnU=
334 UGFzc3dvcmQ6
dGVzdA==
235 2.7.0 Authentication successful
Для тех кто параноидально хочет авторизовать все исходящие емайлы!, ставятся такие правила:smtpd_sasl_auth_enable = yes
smtpd_security_options = noanonymous
smtpd_client_restrictions =
permit_sasl_authenticated
reject_plaintext_session
smtpd_sender_restrictions =
permit_sasl_authenticated
reject_plaintext_session
всем спасибо.
Хы, теперь другая проблема :) не принимается почта извне, ошибка Session encryption is required логи:May 26 16:34:56 sspmail postfix/smtpd[1493]: connect from dsl.test.ru[192.168.232.1]
May 26 16:34:57 sspmail postfix/smtpd[1493]: NOQUEUE: reject: RCPT from выtest.ru[192.168.232.1]: 450 4.7.1 Session encryption is required; from=<mailtesrerx@gmail.com> to=<test@blabla.ru> proto=ESMTP helo=<mail-px0-f199.google.com>
May 26 16:34:57 sspmail postfix/smtpd[1493]: disconnect from dsl.test.ru[192.168.232.1]В примере dsl.test.ru[192.168.232.1] это dsl модем который пробрасывает 25 порт извне во внутрь на сервер.
В общем задумка такая: Отправлять почту по авторизации, и принимать внешюю почту на любые адреса моего домена blabla.ru
>Пытаюсь настроить связку postfix, dovecot, postfixadmin, mysql.
>Пересобрал postfix с такими опциями:
>make makefiles 'CCARGS=-DDEF_SERVER_SASL_TYPE=\"dovecot\" -DHAS_MYSQL -I/usr/local/include/>mysql -DUSE_SASL_AUTH -I/usr/local/include/sasl' 'AUXLIBS=-L/usr/local/lib/mysql ->lmysqlclient -lz -lm -L/usr/local/lib -R/usr/local/lib -lsasl2'Пробовал собрать postfix с этими опциями. После make makefiles выполняю make и получаю
gcc: AUXLIBS=-L/usr/local/lib/mysql: No such file or directory
*** Error code 1Stop in /usr/src/postfix-2.7.0/src/util.
*** Error code 1Stop in /usr/src/postfix-2.7.0.
Библиотеки мускула лежат именно в /usr/local/lib/mysql
fbsd8# cd /usr/local/lib/mysql
fbsd8# ls
libdbug.a libmyisammrg.a libmysqlclient.so libmysqlclient_r.la libmysqld.a libvio.a
libheap.a libmysqlclient.a libmysqlclient.so.15 libmysqlclient_r.so libmystrings.a
libmyisam.a libmysqlclient.la libmysqlclient_r.a libmysqlclient_r.so.15 libmysys.aКто-нибудь знает почему я вижу библиотеки мускула, а gcc их не видит?