1

Тема: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

не работает SMTP авторизация
виртуальные пользователи забиты в базе данных SQL

вот часть лога:
Aug  5 16:05:55 eo postfix/smtpd[1375]: warning: SASL authentication failure: Password verification failed
Aug  5 16:05:55 eo postfix/smtpd[1375]: warning: mydomen.ru[172.20.44.184]: SASL PLAIN authentication failed: authentication failure
Aug  5 16:05:55 eo postfix/smtpd[1375]: warning: mydomen.ru[172.20.44.184]: SASL LOGIN authentication failed: authentication failure
Aug  5 16:05:55 eo postfix/smtpd[1375]: warning: SASL authentication failure: incorrect digest response
Aug  5 16:05:55 eo postfix/smtpd[1375]: warning: mydomen.ru[172.20.44.184]: SASL CRAM-MD5 authentication failed: authentication failure

в чём может быть проблема?
ЗЫ если не хватает инфы, скажите что нужно дополню

2

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

пароль у вас в базе в каком виде хранится? И в каком виде он указан в конфиге?

3

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

конфиг покажи

4

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

У меня похожая проблема... Жаль автор не показал свои конфиги..
Устанленно: Postfix+MYSQL+Postfixadmin+SASL2+IMAP+PhpMyAdmin.
Имена, Пароли храняться в базе мускула в открытом виде.
Вот может это ещё поможет:

forum# pkg_tree postfix
postfix-2.10.1,1
|\__ openssl-1.0.0_7
|\__ pcre-8.20
|\__ mysql-client-5.1.60
 \__ cyrus-sasl-2.1.25_1 (unknown)
postfixadmin-2.3.4
|\__ expat-2.0.1_2
|\__ openssl-1.0.0_7
|\__ perl-threaded-5.12.4_3
|\__ pkg-config-0.25_1
|\__ pcre-8.20
|\__ oniguruma-4.7.1
|\__ gdbm-1.9.1
|\__ db42-4.2.52_5
|\__ libiconv-1.13.1_1
|\__ libxml2-2.7.8_1
|\__ apr-ipv6-devrandom-gdbm-db42-mysql41-1.4.5.1.3.12_1
|\__ apache-2.2.21
|\__ php5-mysqli-5.3.8
|\__ php5-xml-5.3.8
|\__ php5-xmlrpc-5.3.8
|\__ php5-session-5.3.8
|\__ php5-mysql-5.3.8
 \__ php5-mbstring-5.3.8

Вот как у меня сейчас в конфигах:

forum# postconf -n
address_verify_sender = <>
alias_database = mysql:$base/mysqlLookupMaps/alias.conf
alias_maps = mysql:$base/mysqlLookupMaps/alias.conf
base = /usr/local/etc/postfix
broken_sasl_auth_clients = yes
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
debug_peer_level = 2
debug_peer_list = Мойдомен.ru
default_privs = nobody
disable_vrfy_command = yes
header_checks = regexp:$config_directory/header_checks
html_directory = /usr/local/share/doc/postfix
inet_interfaces = 10.11.11.5, 10.11.11.7, 127.0.0.1
inet_protocols = ipv4
local_recipient_maps = $alias_maps, unix:passwd.byname
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 52428800
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
mydestination = $myhostname localhost.$mydomain localhost
mydomain = Мойдомен.ru
myhostname = forum.Мойдомен.ru
mynetworks = 10.11.11.0/24, 127.0.0.0/8, 10.50.50.0/24
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/local/share/doc/postfix
relay_domains = $mydestination
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
show_user_unknown_table_name = no
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:$base/client_access, reject_unknown_client_hostname, reject_unknown_address, reject_unknown_recipient_domain, reject_unknown_sender_domain, reject_unknown_client_hostname, reject_unauth_destination, reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_etrn_restrictions = reject
smtpd_hard_error_limit = 8
smtpd_helo_required = yes
smtpd_helo_restrictions = check_helo_access hash:$base/hello_access, permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname
smtpd_recipient_limit = 8
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access hash:$base/recipient_access, reject_unlisted_recipient, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unverified_recipient
smtpd_reject_unlisted_sender = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_sender_login_maps = mysql:$base/mysqlLookupMaps/sender.conf
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:$base/sender_access, reject_authenticated_sender_login_mismatch, reject_unlisted_sender, reject_unverified_sender, reject_unknown_sender_domain
strict_rfc821_envelopes = yes
transport_maps = mysql:/usr/local/etc/postfix/mysqlLookupMaps/transport.conf
unknown_local_recipient_reject_code = 450
unverified_sender_reject_code = 550
virtual_alias_maps = mysql:$base/mysqlLookupMaps/alias.conf
virtual_gid_maps = static:1981
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_domains = mysql:$base/mysqlLookupMaps/domain.conf
virtual_mailbox_maps = mysql:$base/mysqlLookupMaps/mailbox.conf
virtual_minimum_uid = 1000
virtual_transport = virtual: virtual_create_maildirsize = yes
virtual_uid_maps = static:1981
forum# cat aliases
root:   vlad@Мойдомен.ru
38595:  38595
abuse:  vlad

Почту отправить от локального пользователя своей сети могу, а вот получить от почтового сервера(своего) нет.
В логах получаю следующее при попытке получить почту:

Dec 16 16:39:25 forum pop3d: LOGIN FAILED, method=CRAM-MD5, ip=[::ffff:10.50.50.2]

Да чуть не забыл. При перезагрузке служб для почтовика в логе вижу вот это:

Dec 16 16:24:10 forum authdaemond: modules="authmysql", daemons=5
Dec 16 16:24:10 forum authdaemond: Installing libauthmysql
Dec 16 16:24:10 forum authdaemond: file not found

5

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Насколько я знаю postfix не участвует в отдачи писем пользователям и не отображается в логах как  "pop3d". IMAP - это какой точно софт? Конфиг покажите.

6

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Курьер-имап стоит. Вот его конфиг:

forum# cat pop3d
##VERSION: $Id: pop3d.dist.in 159 2011-11-14 02:07:00Z mrsam $
#
PIDFILE=/var/run/pop3d.pid
MAXDAEMONS=40
MAXPERIP=4
POP3AUTH="PLAIN LOGIN CLEAR"
POP3AUTH_ORIG="PLAIN LOGIN"
POP3AUTH_TLS="PLAIN LOGIN"
POP3AUTH_TLS_ORIG="PLAIN LOGIN"
POP3_PROXY=0
PORT=110
#ADDRESS=10.11.11.7
ADDRESS=0
#TCPDOPTS="-nodnslookup -noidentlookup -user=root -group=postfix"
TCPDOPTS="-nodnslookup -noidentlookup"
#LOGGEROPTS="-name=courier-imap"
LOGGEROPTS="-name=pop3d"
POP3DSTART=YES
MAILDIRPATH=Maildir
forum# cat imapd
##VERSION: $Id: imapd.dist.in 159 2011-11-14 02:07:00Z mrsam $
ADDRESS=0
PORT=143
#  AUTHSERVICE143=imap
#  AUTHSERVICE993=imaps
MAXDAEMONS=40
MAXPERIP=4
PIDFILE=/var/run/imapd.pid
#TCPDOPTS="-nodnslookup -noidentlookup -user=virtual -group=virtual"
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
#DEFDOMAIN="@example.com"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
# SMAP_CAPABILITY=SMAP1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
# PROXY_HOSTNAME=
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_MAILBOX_SANITY_CHECK=1
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/usr/local/etc/courier-imap/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
# IMAP_EMPTYTRASH=Trash:7,Sent:30
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
# IMAP_LOG_DELETIONS=1
# IMAPDEBUGFILE="imaplog.dat"
##NAME: OUTBOX:0
# OUTBOX=.Outbox
##NAME: SENDMAIL:0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
##NAME: OUTBOX_MULTIPLE_SEND:0
# OUTBOX_MULTIPLE_SEND=1
##NAME: IMAPDSTART:0
IMAPDSTART=YES
##NAME: MAILDIRPATH:0
# MAILDIRPATH - directory name of the maildir directory.
MAILDIRPATH=Maildir

7

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

похоже метод аутентификации вам надо менять

8

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Перечитываем внимательно http://www.courier-mta.org/authlib/READ … mysql.html и проверяем все что настроено на сервере.

9 (18-12-2013 12:37:18 отредактировано Vlad55)

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Т.е. в конифге authmysqlrc надо сменить поля:

MYSQL_USER_TABLE        mailbox
[u][b]MYSQL_CRYPT_PWFIELD     password
MYSQL_CLEAR_PWFIELD     password[/b][/u]

Я верно понял Вас?

MYSQL_USER_TABLE        mailbox - это указывает на таблицу mailbox, что имеется в мускуле.
А вот строка
MYSQL_CLEAR_PWFIELD     password
указывает на поле password в таблице mailbox ?

Через PhpMyAdmin я могу видеть все поля базы Postfix. В том числе и открытые пароли в таблице mailbox столбец password.
Какие значение мне надо поставить в строках:
MYSQL_CRYPT_PWFIELD     ******  (password, crypt   или другое)
MYSQL_CLEAR_PWFIELD     ****** (password, clear  или другое)
?????

Укажите направление правильного действия ручек....  smile

Добавлено: 18-12-2013 16:59:56

Пробовал комбинации:

MYSQL_CRYPT_PWFIELD crypt
MYSQL_CLEAR_PWFIELD clear

результат тот же:

pop3d: LOGIN FAILED, method=CRAM-MD5, ip=[::ffff:]

10

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Давайте включим воображение, логическое мышление и режим отладки.

1. Определитесь, пароли все-таки закодированные или нет
2. Если не понятно какие именно запросы идут в базу - надо включить mysql query log и посмотреть что пытается отправить Courier-IMAP и что возвращается ему из базы данных

Если все же не получится (денька два подумать надо) приведите нормальный пример структуры таблицы с пользователями, пример одного пользователя и полный файл authmysqlrc

11

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Файл authmysqlrc:

# cat authmysqlrc
MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME          postfixadmin
MYSQL_PASSWORD          мойпароль2
MYSQL_SOCKET            /tmp/mysql.sock
#MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          Postfix
MYSQL_USER_TABLE        mailbox
#MYSQL_CRYPT_PWFIELD     crypt
MYSQL_CLEAR_PWFIELD     password
MYSQL_UID_FIELD         '1981'
MYSQL_GID_FIELD         '1981'
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        '/var/spool/mail'
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota
#MYSQL_AUXOPTIONS_FIELD  active='1'
MYSQL_WHERE_CLAUSE      active='1'

Вот структура базы:

mysql> show tables from Postfix;
+-----------------------+
| Tables_in_Postfix     |
+-----------------------+
| admin                 |
| alias                 |
| alias_domain          |
| config                |
| domain                |
| domain_admins         |
| fetchmail             |
| log                   |
| mailbox               |
| quota                 |
| quota2                |
| vacation              |
| vacation_notification |
+-----------------------+
mysql> desc mailbox;
+------------+--------------+------+-----+---------------------+-------+
| Field      | Type         | Null | Key | Default             | Extra |
+------------+--------------+------+-----+---------------------+-------+
| username   | varchar(255) | NO   | PRI | NULL                |       |
| password   | varchar(255) | NO   |     | NULL                |       |
| name       | varchar(255) | NO   |     | NULL                |       |
| maildir    | varchar(255) | NO   |     | NULL                |       |
| quota      | bigint(20)   | NO   |     | 0                   |       |
| local_part | varchar(255) | NO   |     | NULL                |       |
| domain     | varchar(255) | NO   | MUL | NULL                |       |
| created    | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| modified   | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| active     | tinyint(1)   | NO   |     | 1                   |       |
+------------+--------------+------+-----+---------------------+-------+
mysql> desc alias;
+----------+--------------+------+-----+---------------------+-------+
| Field    | Type         | Null | Key | Default             | Extra |
+----------+--------------+------+-----+---------------------+-------+
| address  | varchar(255) | NO   | PRI | NULL                |       |
| goto     | text         | NO   |     | NULL                |       |
| domain   | varchar(255) | NO   | MUL | NULL                |       |
| created  | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| modified | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| active   | tinyint(1)   | NO   |     | 1                   |       |
+----------+--------------+------+-----+---------------------+-------+

Добавлено: 19-12-2013 13:10:39

Меня ещё вот это беспокоит, вроде все перепробовал... Однако при рестарте/старте  authdaemond получаю вот это:

Dec 19 12:04:56 forum authdaemond: modules="authmysql", daemons=5
Dec 19 12:04:56 forum authdaemond: Installing libauthmysql
Dec 19 12:04:56 forum authdaemond: file not found

12

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Видимо не все вы поставили.

13

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

Сказано же было, два дня на решение в режиме отладки http://www.courier-mta.org/authlib/READ … debug.html Научитесь давать ту информацию которую просят и делать все что вам сказано.

14 (20-12-2013 06:28:25 отредактировано Vlad55)

Re: проблема с почтовым сервером postfix+mysql+cyrus-sasl2

SatanaClause пишет:

Давайте включим воображение, логическое мышление и режим отладки.

1. Определитесь, пароли все-таки закодированные или нет

открытые.

2. Если не понятно какие именно запросы идут в базу - надо включить mysql query log и посмотреть что пытается отправить Courier-IMAP и что возвращается ему из базы данных

Пожалуйста, подскажите где включаетсяэтот режим логгирования.(если Вам не не сложно).

Если все же не получится (денька два подумать надо) приведите нормальный пример структуры таблицы с пользователями, пример одного пользователя и полный файл authmysqlrc