URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 76477
[ Назад ]

Исходное сообщение
"Postfix + MySQL + Courier-IMAP"

Отправлено sza , 28-Сен-07 15:50 
Здравствуйте.
При организации такой вот простой связки, возникли проблемы. Читал много мануалов, коих в инете полно. Но все же не получается заставить работать такую вот простую вешчь :)

Почта отправлять - отправляется. В почтовый ящик пользователя складывается. Соединение с pop3 сервером устанавливается. А вот получить почту не получается.

Куски логов:
<maillog>:
Sep 28 18:05:53 host002m pop3d: LOGIN FAILED, user=it1, ip=[10.0.0.9]

<debug.log>:
Sep 28 18:05:52 host002m pop3d: Connection, ip=[10.0.0.9]
Sep 28 18:05:52 host002m authdaemond: received auth request, service=pop3, authtype=login
Sep 28 18:05:52 host002m authdaemond: authmysql: trying this module
Sep 28 18:05:53 host002m authdaemond: SQL query: SELECT email, crypt, password, '1003', '1003', '/var/vmailbox', maildir, "", "", "" FROM users WHERE email = "it1"
Sep 28 18:05:53 host002m authdaemond: zero rows returned
Sep 28 18:05:53 host002m authdaemond: no password available to compare
Sep 28 18:05:53 host002m authdaemond: authmysql: REJECT - try next module
Sep 28 18:05:53 host002m authdaemond: FAIL, all modules rejected
Sep 28 18:05:58 host002m pop3d: Disconnected, ip=[10.0.0.9]

<mysql.log>:
7 Connect     postfix@localhost on
7 Init DB     mail
7 Query       SELECT email, crypt, password, '1003', '1003', '/var/vmailbox', maildir, "", "", "" FROM users WHERE email = "it1"

Конфигурационные файлы:
<main.cf>:
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_unknown_recipient_domain, reject_non_fqdn_recipient
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
strict_rfc821_envelopes = yes
transport_maps = mysql:$base/mysqlconf/transport.conf
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:$base/mysqlconf/aliases.conf
virtual_gid_maps = static:1003
virtual_mailbox_base = /var/vmailbox
virtual_mailbox_domains = virt1.firma.ru
virtual_mailbox_maps = mysql:$base/mysqlconf/users.conf
virtual_minimum_uid = 1000
virtual_uid_maps = static:1003

<authdaemonrc>:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=2
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""

<authmysqlrc>:
MYSQL_SERVER        localhost
MYSQL_USERNAME        postfix
MYSQL_PASSWORD        postfix
MYSQL_SOCKET        /tmp/mysql.sock
MYSQL_PORT        3306
MYSQL_OPT        0
MYSQL_DATABASE        mail
MYSQL_USER_TABLE    users
MYSQL_CRYPT_PWFIELD    crypt
MYSQL_CLEAR_PWFIELD    password
MYSQL_UID_FIELD        '1003'
MYSQL_GID_FIELD        '1003'
MYSQL_LOGIN_FIELD    email
MYSQL_HOME_FIELD    '/var/vmailbox'
MYSQL_MAILDIR_FIELD    maildir

<pop3d>:
PIDFILE=/var/run/pop3d.pid
MAXDAEMONS=40
MAXPERIP=4
POP3AUTH="CRAM-MD5 PLAIN LOGIN"
POP3AUTH_ORIG="CRAM-MD5 PLAIN LOGIN"
POP3_PROXY=0
PORT=110
ADDRESS=0
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=pop3d"
POP3DSTART=YES
MAILDIRPATH=/var/vmailbox


Содержание

Сообщения в этом обсуждении
"Postfix + MySQL + Courier-IMAP"
Отправлено ALex_hha , 28-Сен-07 17:48 
>MYSQL_CRYPT_PWFIELD crypt
>MYSQL_CLEAR_PWFIELD password

НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ЭТИ ДВА ПОЛЯ ОДНОВРЕМЕННО!!!


"Postfix + MySQL + Courier-IMAP"
Отправлено sza , 30-Сен-07 07:57 
>>MYSQL_CRYPT_PWFIELD crypt
>>MYSQL_CLEAR_PWFIELD password
>
>НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ЭТИ ДВА ПОЛЯ ОДНОВРЕМЕННО!!!

Спасибо. Действительно, был такой косяк.
Убрал MYSQL_CRYPT_PWFIELD    crypt.
И убрал из pop3d:
POP3AUTH="PLAIN LOGIN CRAM-MD5"
POP3AUTH_ORIG="PLAIN LOGIN CRAM-MD5"
POP3_PROXY=0
Поскольку мой почтовый сервер не использует прокси, SASL и web.

Для проверки завел второй виртуальный домен и пользователя в нем. Посылаю почту от пользователя virt1.firma.ru пользователю virt2.firma.ru (естественно что в main.cf указал параметр virtual_mailbox_domains = mysql:$base/mysqlconf/domains.conf и в базе mail завел оба виртуальных домена).  Почта исправно доставляется и складывается в файл. Но вот при получении те же проблемы остались. Причем соединение с pop3 сервером устанавливается, а вот проверку пароля пройти не удается. И в логах те же самые собщения остались.


"Postfix + MySQL + Courier-IMAP"
Отправлено Solo_Wolf , 01-Окт-07 09:36 
Courier-IMAP использует username для авторизации, а postfix для доставки использует username@domain

Поэтому запросы для courier-IMAP и postfix должны отличаться. У меня это реализовано на уровне view.


"Postfix + MySQL + Courier-IMAP"
Отправлено ALex_hha , 01-Окт-07 17:38 
>Courier-IMAP использует username для авторизации, а postfix для доставки использует username@domain
>
>Поэтому запросы для courier-IMAP и postfix должны отличаться. У меня это реализовано
>на уровне view.

кто вам сказал такой бред?


"Postfix + MySQL + Courier-IMAP"
Отправлено Solo_Wolf , 01-Окт-07 18:24 
>>Courier-IMAP использует username для авторизации, а postfix для доставки использует username@domain
>>
>>Поэтому запросы для courier-IMAP и postfix должны отличаться. У меня это реализовано
>>на уровне view.
>
>кто вам сказал такой бред?

Странно... Я специально делал добавку. Ежели конечно у человека в качестве login в mail серверу используется имя"домен, то тогда вы действительно правы. А если нет, то ошибка довольно похожа на ту, что я получал.


"Postfix + MySQL + Courier-IMAP"
Отправлено sza , 01-Окт-07 21:49 
Всем доброго времени суток.
Проблема была из-за несоответствия запроса к базе структуре таблицы users. Привел структуру к стандартному виду:

create table users(email varchar(128) not null default '',
                   cryptpw varchar(128) not null default '',
                   clearpw varchar(128) not null default '',
                   uid int(11) unsigned not null default '1003',
                   gid int(11) unsigned not null default '1003',
                   home varchar(128) not null default '/var/vmailbox',
                   domain varchar(128) not null default '',
                   maildir varchar(128) not null default '',
                   quota int(11) unsigned default '',
                   fullname varchar(128) not null default '',
                   options tinyint(4) not null default '');

и теперь в логах несколько другое сообщение:

<maillog>:
Oct  1 15:10:29 host002m pop3d: authdaemon: s_connect() failed: Permission denied
Oct  1 15:10:29 host002m pop3d: LOGIN FAILED, user=it1, ip=[10.0.0.9]
Oct  1 15:10:29 host002m pop3d: authentication error: Permission denied

Может есть у кого какие идеи?


"Postfix + MySQL + Courier-IMAP"
Отправлено Solo_Wolf , 01-Окт-07 23:07 
SQL для courier-IMAP должен выдать имя каталога, где лежат файлы с письмами (на каждое письмо свой файл, а не все в одном файле - это даже в форуме проскакивало). Там же и подкаталоги, которые создаются клиентами IMAP. И сообщение -authentication error: Permission denied - не значит, что нет доступа, он просто попадает мимо.

"Postfix + MySQL + Courier-IMAP"
Отправлено sza , 02-Окт-07 08:36 
>SQL для courier-IMAP должен выдать имя каталога, где лежат файлы с письмами
>(на каждое письмо свой файл, а не все в одном файле
>- это даже в форуме проскакивало). Там же и подкаталоги, которые
>создаются клиентами IMAP. И сообщение -authentication error: Permission denied - не
>значит, что нет доступа, он просто попадает мимо.

Здравствуйте Solo_Wolf.
Интересная штука. Когда поле maildir устанавливаю значение '/virt1.firma.ru/it1', то вся почта складывается в один файл. А когда значение '/virt1.firma.ru/it1/' то создаются в каталоге it1 три подкаталога /cur, /new и /tmp. Причем почта действительно складывается разными файлами в /var/vmailbox/virt1.firma.ru/it1/new/. Но ошибка та же самая осталась.


"Postfix + MySQL + Courier-IMAP"
Отправлено Solo_Wolf , 02-Окт-07 10:18 
В случае с pop3 SQL должен выдавать ему в поле home  /var/vmailbox/virt1.firma.ru/it1/new/.