The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема авторизации roundcube в dovecot+postfix"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта)
Изначальное сообщение [ Отслеживать ]

"Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 09:54 
Всем привет. Поднял локальный почтовый сервер dovecot+postfix+postfixadmin почта между клиентами ходит. Через почтовые клиенты типа Outlook и Thunderbird все ок и через IMAP и через POP3. Вот с roundcube засада полная, не хочет авторизировать клиента хоть тресни. Может кто подскажет как победить проблему.
П.С. Отключил использование ssl сертификатов roundcube загрузился без проблем, вопрос в том как заставить его  с ним подключаться к dovecot'у.

dovecot.conf


# Мы не используем специализированные файлы из поставки Dovecot из папки /etc/dovecot/conf.d/.
# Основная причина: отсутствие ясного руководства по их использованию. А также сравнительно небольшой
# размер всего конфига (все перед глазами, нет необходимости раскидывать по отдельным файлам).
#!include conf.d/*.conf

# Нет необходимости явно указывать imaps и pop3s - Dovecot 2.* по-умолчанию их включает.
protocols = imap pop3
listen = *

# Завершать все дочерние процессы, если завершен мастер-процесс
shutdown_clients = yes

# Владелец почтовых папок (также см. конфиг Postfix):
mail_uid = vmail
mail_gid = vmail

# Только наш пользователь с uid и gid 5000 (vmail) может быть использован.
first_valid_uid = 5000
last_valid_uid = 5000

# Лог-файлы. Подробнее: http://wiki2.dovecot.org/Logging
log_path = /var/log/dovecot.log
# Отладка. Если все настроено, отключаем (no)
# http://maint.unona.ru/doc/dovecot2.shtml
mail_debug = yes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

# SSL
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl = required
#ssl_cert = </etc/pki/dovecot/certs/server.crt
#ssl_key = </etc/pki/dovecot/private/server.key
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem

ssl_protocols = TLSv1 TLSv1.1 TLSv1.2 !SSLv2 !SSLv3
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL

# Запрет аутентификации открытым текстом. yes - запретить, no - разрешить.
disable_plaintext_auth = no

# Список разрешенных символов в имене пользователя.
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# Расположение и формат файлов почты (%d - домен, %n - имя пользователя).
mail_location = maildir:/var/vmail/%d/%n

# Если при аутентификации не указан домен, то добавить этот (в данном примере - пустой)
auth_default_realm =

# Доступные варианты аутентификации (PLAIN, DIGEST-MD5, CRAM-MD5...).
# Для того, чтобы иметь меньше головной боли ставьте PLAIN
auth_mechanisms = PLAIN

# Приветственное сообщение
login_greeting = POP3/IMAP server ready.

# Одно из самых важных мест - предоставление сокетов для аутентификации пользователей.
# Если настроено неверно - ничего работать не будет!
service auth {
    # http://maint.unona.ru/doc/dovecot2.shtml
    # Указывает, что данный сокет будет использовать SMTP сервер для аутентификации.
    # Указывается пользователь, группа и права доступа к сокету. В данном случае это postfix
    # ("mail_owner = postfix" в файле /etc/postfix/main.cf).
    unix_listener /var/spool/postfix/private/auth {
        user = postfix
        group = postfix
        mode = 0660
    }
    unix_listener auth-master {
        user = vmail
        group = vmail
        mode = 0660
    }
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

# Запрос параметров виртуальных почтовых пользователей
# (логин, пароль, домен, активный/неактивный и др.)
userdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}
passdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}

# Plugins

protocol imap {
    imap_client_workarounds = tb-extra-mailbox-sep
    mail_plugins = autocreate
}
protocol pop3 {
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    pop3_uidl_format = XuXv
}
protocol lda {
    # Куда будут перенаправлены недоставленные письма
    postmaster_address = postmaster@localhost
    auth_socket_path = /var/run/dovecot/auth-master
}


plugin {
    auth_socket_path = /var/run/dovecot/auth-master

    # Plugin: autocreate. Создаем и подписываемся на папки IMAP.
    autocreate = INBOX
    autocreate2 = Sent
    autocreate3 = Trash
    autocreate4 = Drafts
    autocreate5 = Junk
    autosubscribe = INBOX
    autosubscribe2 = Sent
    autosubscribe3 = Trash
    autosubscribe4 = Drafts
    autosubscribe5 = Junk

    # Plugin: квоты. Пока отключим.
    # http://wiki2.dovecot.org/Quota/Configuration
    #quota = maildir:User quota
    #quota_rule = *:storage=1GB
    #quota_rule2 = Trash:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule3 = Junk:storage=+10%% # 10% of 1GB = 100MB
    #quota_rule4 = Drafts:storage=+10%% # 10% of 1GB = 100MB
}

postfix maib.cf


### Config

### Common config
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
myhostname = centos6.virtual.local
mydomain = virtual.local
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, localhost.localdomain
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8, 10.10.0.0/24
#in_flow_delay = 1s
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

local_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps

home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
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/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix


# The mail_owner parameter specifies the owner of the Postfix queue
# and of most Postfix daemon processes.  Specify the name of a user
# account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS
# AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM.  In
# particular, don't specify nobody or daemon. PLEASE USE A DEDICATED
# USER.
#
mail_owner = postfix
# setgid_group: The group for mail submission and queue management
# commands.  This must be a group name with a numerical group ID that
# is not shared with other accounts, not even with the Postfix account.
#
setgid_group = postdrop

html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

virtual_transport = dovecot
dovecot_destination_recipient_limit=1

### Auth
smtpd_sasl_auth_enable=yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth # см. конфиг Dovecot

### Relay Domains:
#relay_domains = mysql:/etc/postfix/sql/mysql_relay_domains.cf

### Virtual Domains:
virtual_mailbox_base = /var/vmail
virtual_mailbox_domains =
   mysql:/etc/postfix/sql/virtual_mailbox_domains.cf
virtual_alias_maps =
   mysql:/etc/postfix/sql/virtual_alias_maps.cf
virtual_mailbox_maps =
   mysql:/etc/postfix/sql/virtual_mailbox_maps.cf

virtual_minimum_uid = 5000
#virtual_minimum_gid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

### Quotas
# Квоты пока не проверял
#virtual_create_maildirsize = yes
#virtual_mailbox_extended = yes
#virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
#virtual_mailbox_limit_override = yes
#virtual_maildir_limit_message = "Sorry, the user's maildir has overdrawn his diskspace quota."
#virtual_overquota_bounce = yes

### Restrictions
smtpd_client_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unknown_reverse_client_hostname,
        permit

smtpd_helo_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname,
        permit

smtpd_sender_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_non_fqdn_sender,
        reject_unknown_sender_domain,
        reject

smtpd_recipient_restrictions =
        reject_non_fqdn_recipient,
        reject_unknown_recipient_domain,
        permit_sasl_authenticated,
        reject_unlisted_recipient,
        permit_mynetworks,
        reject_unauth_destination,
        reject

smtpd_data_restrictions =
    permit_mynetworks,
    reject_unauth_pipelining,
    reject_multi_recipient_bounce,
    permit

smtpd_etrn_restrictions = reject
smtpd_helo_required = yes

#strict_rfc821_envelopes = yes

smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
disable_vrfy_command = yes

### TLS
smtpd_use_tls = yes
#smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
#smtpd_tls_key_file =  /etc/pki/dovecot/private/dovecot.pem

smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.pem

smtp_tls_security_level=may
smtpd_tls_mandatory_protocols=TLSv1, TLSv1.1, TLSv1.2, !SSLv2, !SSLv3
smtpd_tls_auth_only = yes

smtp_tls_loglevel = 1
smtpd_tls_loglevel = 1

roundcube config.inc.php


<?php

/* Local configuration for Roundcube Webmail */

// ----------------------------------
// SQL DATABASE
// ----------------------------------
// Database connection string (DSN) for read+write operations
// Format (compatible with PEAR MDB2): db_provider://user:password@host/database
// Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv
// For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-ds...
// NOTE: for SQLite use absolute path: 'sqlite:////full/path/to/sqlite.db?mode=0646'
$config['db_dsnw'] = 'mysql://roundcube:password1@localhost/roundcube';
// ----------------------------------
// IMAP
// ----------------------------------
// The mail host chosen to perform the log-in.
// Leave blank to show a textbox at login, give a list of hosts
// to display a pulldown menu or set one host as string.
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// Supported replacement variables:
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %s - domain name after the '@' from e-mail address provided at login screen
// For example %n = mail.domain.tld, %t = domain.tld
// WARNING: After hostname change update of mail_host column in users table is
//          required to match old user data records with the new host.
$config['default_host'] = 'ssl://localhost';
$config['default_port'] = 993;
$config['imap_auth_type'] = PLAIN;
// TCP port used for IMAP connections

// ----------------------------------
// SMTP
// ----------------------------------
// SMTP server host (for sending mails).
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// If left blank, the PHP mail() function is used
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_server'] = 'localhost';

// provide an URL where a user can get support for this Roundcube installation
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
$config['support_url'] = '';

// this key is used to encrypt the users imap password which is stored
// in the session record (and the client cookie if remember password is enabled).
// please provide a string of exactly 24 chars.
$config['des_key'] = '301c742212dab133ed1eafdd';

// ----------------------------------
// PLUGINS
// ----------------------------------
// List of active plugins (in plugins/ directory)
$config['plugins'] = array();

$config['auto_create_user'] = TRUE;

dovecot-mysql.conf


driver = mysql
connect = host=localhost dbname=mail user=postfix password=postfixPassword
default_pass_scheme = CRAM-MD5

password_query = SELECT username AS user,domain,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT username AS user, '5000' AS uid, '5000' AS gid FROM mailbox WHERE username = '%u' AND domain = '%d' AND active='1'

Вот что в логах при авторизации:

dovecot.log


Jul 05 23:02:05 auth: Debug: auth client connected (pid=7063)
Jul 05 23:02:05 imap-login: Info: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, TLS handshaking, session=<Ca1qQyYafgB/AAAB>

roundcube errors


[05-Jul-2015 23:02:05 +0300]: <6l43jts4> IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Could not connect to ssl://localhost:993: Unknown reason in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от omnomnim on 06-Июл-15, 10:15 
dovecot
>ssl_protocols = TLSv1 TLSv1.1 TLSv1.2 !SSLv2 !SSLv3

postfix
>smtpd_tls_mandatory_protocols=TLSv1, TLSv1.1, TLSv1.2, !SSLv2, !SSLv3

!SSLv* , NOT, Carl !!!

Тады почему в roundcube пишем:

>$config['default_host'] = 'ssl://localhost';

????

сделай

$config['default_host'] = 'tls://localhost';

$config['smtp_server'] = 'tls://localhost';

и будет Щастье

Внимательней надо быть и понимать что пишем в конфиг, а не копипастить с бложиков 1917 года ...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 11:39 
>[оверквотинг удален]
> !SSLv* , NOT, Carl !!!
> Тады почему в roundcube пишем:
>>$config['default_host'] = 'ssl://localhost';
> ????
> сделай
> $config['default_host'] = 'tls://localhost';
> $config['smtp_server'] = 'tls://localhost';
> и будет Щастье
> Внимательней надо быть и понимать что пишем в конфиг, а не копипастить
> с бложиков 1917 года ...

Ну что нашел тем и пользовался, тем более все завелось кроме этой авторизации.
Поправил щастье не пришло. (

теперь ругается так
Dovecot

Jul 06 11:10:30 auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Jul 06 11:10:30 auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Jul 06 11:10:30 auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat
Jul 06 11:10:30 auth: Debug: auth client connected (pid=8203)
Jul 06 11:11:30 imap-login: Info: Disconnected (no auth attempts in 60 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, TLS handshaking: Disconnected, session=</OL/czAaqAB/AAAB>

roundcube
[06-Jul-2015 11:11:30 +0300]: <6l43jts4> IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Empty startup greeting (localhost:993) in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от omnomnim on 06-Июл-15, 12:26 
auth_mechanisms = PLAIN LOGIN
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 12:48 
> auth_mechanisms = PLAIN LOGIN

Это я так понял в dovecot.conf поправить.
Увы все тоже самое. Логи те же.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 06-Июл-15, 12:45 
>Info: Disconnected (no auth attempts in 60 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, TLS handshaking: Disconnected, session=</OL/czAaqAB/AAAB>

imap-login отвaлился по таймауту

>IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Empty startup greeting (localhost:993) in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

перепроверьте(в том чмисле по докам) - что дожен roundcube отдавать/принимать(и отдает/принимает) на пользователськом и служебном каналам

>> POST /roundcube/?_task=login?_task=login&_action=login

уже даже это подозреваю ошибка,
и можете глянуть скрипт /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php,
и функцию имеющей 198 строку - чо-там не так, если в пыхе сильны сможете разобраться...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 13:19 
>>Info: Disconnected (no auth attempts in 60 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, TLS handshaking: Disconnected, session=</OL/czAaqAB/AAAB>
> imap-login отвaлился по таймауту
>>IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Empty startup greeting (localhost:993) in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
> перепроверьте(в том чмисле по докам) - что дожен roundcube отдавать/принимать(и отдает/принимает)
> на пользователськом и служебном каналам
>>> POST /roundcube/?_task=login?_task=login&_action=login
> уже даже это подозреваю ошибка,
> и можете глянуть скрипт /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php,
> и функцию имеющей 198 строку - чо-там не так, если в пыхе
> сильны сможете разобраться...

Увы, залез конечно туда первым делом при ошибке но в пыхе не силен.
В почтовых клиентах сразу о сертификате выскакивала инфа и дальше все проходило. Явно что надо передать в правильном виде. Но roundcube о сертификатах инфы не нашел чето.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 06-Июл-15, 13:27 
>[оверквотинг удален]
>>>> POST /roundcube/?_task=login?_task=login&_action=login
>> уже даже это подозреваю ошибка,
>> и можете глянуть скрипт /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php,
>> и функцию имеющей 198 строку - чо-там не так, если в пыхе
>> сильны сможете разобраться...
> Увы, залез конечно туда первым делом при ошибке но в пыхе не
> силен.
> В почтовых клиентах сразу о сертификате выскакивала инфа и дальше все проходило.
> Явно что надо передать в правильном виде. Но roundcube о сертификатах
> инфы не нашел чето.

содеpжимое этого файла: 198 -/+25 строк(со 173 и по 223)

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 13:39 
> содеpжимое этого файла: 198 -/+25 строк(со 173 и по 223)

Конечно, вот держи:

        if ($this->conn->connected()) {
            // check for session identifier
            $session = null;
            if (preg_match('/\s+SESSIONID=([^=\s]+)/', $this->conn->result, $m)) {
                $session = $m[1];
            }

            // get namespace and delimiter
            $this->set_env();

            // trigger post-connect hook
            $this->plugins->exec_hook('storage_connected', array(
                'host' => $host, 'user' => $user, 'session' => $session
            ));

            return true;
        }
        // write error log
        else if ($this->conn->error) {
            if ($pass && $user) {
                $message = sprintf("Login failed for %s from %s. %s",
                    $user, rcube_utils::remote_ip(), $this->conn->error);

                rcube::raise_error(array('code' => 403, 'type' => 'imap',
198 ==>>>             'file' => __FILE__, 'line' => __LINE__,
                    'message' => $message), true, false);
            }
        }

        return false;
    }


    /**
     * Close IMAP connection.
     * Usually done on script shutdown
     */
    public function close()
    {
        $this->conn->closeConnection();
        if ($this->mcache) {
            $this->mcache->close();
        }
    }


    /**
     * Check connection state, connect if not connected.
     *
     * @return bool Connection state.
     */


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 06-Июл-15, 13:48 
>> содеpжимое этого файла: 198 -/+25 строк(со 173 и по 223)
>         // write error log

от начала ф-ции и до сюда  

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 14:53 
>>> содеpжимое этого файла: 198 -/+25 строк(со 173 и по 223)
>>         // write error log
> от начала ф-ции и до сюда

Вот лови


    /**
     * Connect to an IMAP server
     *
     * @param string  $host    Host to connect
     * @param string  $user    Username for IMAP account
     * @param string  $pass    Password for IMAP account
     * @param integer $port    Port to connect to
     * @param string  $use_ssl SSL schema (either ssl or tls) or null if plain connection
     *
     * @return boolean True on success, False on failure
     */
    public function connect($host, $user, $pass, $port=143, $use_ssl=null)
    {
        // check for OpenSSL support in PHP build
        if ($use_ssl && extension_loaded('openssl')) {
            $this->options['ssl_mode'] = $use_ssl == 'imaps' ? 'ssl' : $use_ssl;
        }
        else if ($use_ssl) {
            rcube::raise_error(array('code' => 403, 'type' => 'imap',
                'file' => __FILE__, 'line' => __LINE__,
                'message' => "OpenSSL not available"), true, false);
            $port = 143;
        }

        $this->options['port'] = $port;

        if ($this->options['debug']) {
            $this->set_debug(true);

            $this->options['ident'] = array(
                'name'    => 'Roundcube',
                'version' => RCUBE_VERSION,
                'php'     => PHP_VERSION,
                'os'      => PHP_OS,
                'command' => $_SERVER['REQUEST_URI'],
            );
        }

        $attempt = 0;
        do {
            $data = $this->plugins->exec_hook('storage_connect',
                array_merge($this->options, array('host' => $host, 'user' => $user,
                    'attempt' => ++$attempt)));

            if (!empty($data['pass'])) {
                $pass = $data['pass'];
            }

            $this->conn->connect($data['host'], $data['user'], $pass, $data);
        } while(!$this->conn->connected() && $data['retry']);

        $config = array(
            'host'     => $data['host'],
            'user'     => $data['user'],
            'password' => $pass,
            'port'     => $port,
            'ssl'      => $use_ssl,
        );

        $this->options      = array_merge($this->options, $config);
        $this->connect_done = true;

        if ($this->conn->connected()) {
            // check for session identifier
            $session = null;
            if (preg_match('/\s+SESSIONID=([^=\s]+)/', $this->conn->result, $m)) {
                $session = $m[1];
            }

            // get namespace and delimiter
            $this->set_env();

            // trigger post-connect hook
            $this->plugins->exec_hook('storage_connected', array(
                'host' => $host, 'user' => $user, 'session' => $session
            ));

            return true;
        }
        // write error log

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 06-Июл-15, 16:09 
>>>> содеpжимое этого файла: 198 -/+25 строк(со 173 и по 223)
>>>         // write error log
>> от начала ф-ции и до сюда
> Вот лови
>     /**
>      * Connect to an IMAP server
>      *

м-да, вроде нормульно...
надо копать по поиcковикам: Empty startup greeting + roundcube

из беглого поиска, что нарылось(правда 6 лет давности) можно перепроверить -  http://trac.roundcube.net/changeset/587444f6/github
...

P.S.:
snifer (wireshark), поиcковик, доки и копать этот частный случай

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 20:39 
Да уже гуглил по этой связке большинство решений это пляски вокруг трех строчек конфига там где порт сервер и тип пароля. И в итоге тоже глухо без толковых вариантов. Попробую еще поискать. Без tls нормально же конектится.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

17. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 06-Июл-15, 21:17 
> Да уже гуглил по этой связке большинство решений это пляски вокруг трех
> строчек конфига там где порт сервер и тип пароля. И в
> итоге тоже глухо без толковых вариантов. Попробую еще поискать. Без tls
> нормально же конектится.

Дык, если требований нэма - может наффик этот secure layer в рамках 127.0.0.0 ?

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

23. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 07-Июл-15, 10:26 
>> Да уже гуглил по этой связке большинство решений это пляски вокруг трех
>> строчек конфига там где порт сервер и тип пароля. И в
>> итоге тоже глухо без толковых вариантов. Попробую еще поискать. Без tls
>> нормально же конектится.
> Дык, если требований нэма - может наффик этот secure layer в рамках
> 127.0.0.0 ?

Почему только на 127.0 это же на всю сеть будет идти.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

25. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 07-Июл-15, 10:52 
> Почему только на 127.0 это же на всю сеть будет идти.

roundcube не на почтовом хосте, что-ли ?

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

26. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 07-Июл-15, 11:01 
>> Почему только на 127.0 это же на всю сеть будет идти.
> roundcube не на почтовом хосте, что-ли ?

Да сорри туплю уже ) он там же крутится. Может тогда для него можно как-то отдельную авторизацию сделать без шифрования? чтоб для обычных почтовых клиентов его оставить.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

27. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 07-Июл-15, 11:13 
>>> Почему только на 127.0 это же на всю сеть будет идти.
>> roundcube не на почтовом хосте, что-ли ?
> Да сорри туплю уже ) он там же крутится. Может тогда для
> него можно как-то отдельную авторизацию сделать без шифрования? чтоб для обычных
> почтовых клиентов его оставить.

варс:
- 110 порт заюзать
- кастомные поры в dovecot`e
...
?
P.S
а потом,
если морально-спортивные соображения чесаться будут - докрутить roundcube ?

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

28. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 07-Июл-15, 11:25 
>[оверквотинг удален]
>> него можно как-то отдельную авторизацию сделать без шифрования? чтоб для обычных
>> почтовых клиентов его оставить.
> варс:
>  - 110 порт заюзать
>  - кастомные поры в dovecot`e
>  ...
>  ?
> P.S
> а потом,
> если морально-спортивные соображения чесаться будут - докрутить roundcube ?

Да как то так. Пока затраты времени на это превышают результат. Как поднять почтовик на linux уже  понятно и это радует. Еще впереди надо как-то прикрутить fetchmail для забора почты у провайдера и раскидку по пользователям согласно получателю (аналог DomainPOP в Mdaemon) + фильтрацию спама, вот тут вижу основную проблему (еще на пару тем обсуждений). За советы большое спасибо.

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

29. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от fail on 07-Июл-15, 11:36 
>> а потом,
>> если морально-спортивные соображения чесаться будут - докрутить roundcube ?
> Да как то так. Пока затраты времени на это превышают результат. Как
> поднять почтовик на linux уже  понятно и это радует. Еще
> впереди надо как-то прикрутить fetchmail для забора почты у провайдера и
> раскидку по пользователям согласно получателю (аналог DomainPOP в Mdaemon) + фильтрацию
> спама, вот тут вижу основную проблему (еще на пару тем обсуждений).
> За советы большое спасибо.

глянете cat /etc/services | grep imap ...там уже сами imap(без secure layer) докрутите в dovecot`e и roundcube,
fetchmail - просто по докам и прочему,
а касаемo спама придется повозиться с доками и поисковиками... там много вариантов решения

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

5. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 06-Июл-15, 12:46 
$rcmail_config['debug_level'] = 8; в roundcube чтобы подробности ошибки узнать
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 13:13 
> $rcmail_config['debug_level'] = 8; в roundcube чтобы подробности ошибки узнать

Сделал в файл roundcube/log/errors вообще перестало что-то писаться. Или в каком-то другом месте смотреть уже надо?
пробовал еще в таком виде $config['debug_level'] = 8; тоже в логе пусто.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

14. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 06-Июл-15, 17:31 
Errors are written to the log if the debug level has set the bit for 1. If you want bugs to bew shown on the screen, set it to 4. If you want both logging and displaying then you have to set your debug level to 5.

// Log IMAP conversation to <log_dir>/imap or to syslog
$config['imap_debug'] = true;

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

16. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 20:50 
> Errors are written to the log if the debug level has set
> the bit for 1. If you want bugs to bew shown
> on the screen, set it to 4. If you want both
> logging and displaying then you have to set your debug level
> to 5.
> // Log IMAP conversation to <log_dir>/imap or to syslog
> $config['imap_debug'] = true;

Прописал
$config['imap_debug'] = true;
$config['debug_level'] = 5;
Сообщение ошибки из лога стало еще на самом сайте roundcube выводить. В syslog ничего не попадает.


Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

18. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 06-Июл-15, 22:42 
вообще roundcube без ssl/tls у вас работает? пускает пользователей?

а если прописать явно из этих и попробовать по одному:
$config['default_host'] = 'ssl://127.0.0.1:143'  (да да 143, ты не ошибся)

$config['default_host'] = 'tls://127.0.0.1:143'  (да да 143, ты не ошибся)

$config['default_host'] = 'ssl://127.0.0.1:993'

$config['default_host'] = 'tls://127.0.0.1:993'

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 06-Июл-15, 22:46 
так же возможно идет проверка сертификата и FQDN, на которое выдан SSL сертификат, тогда придется бекэнд указывать в виде ssl://mail.test.ru:993 или tls://mail.test.ru:993
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

21. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 23:17 
> так же возможно идет проверка сертификата и FQDN, на которое выдан SSL
> сертификат, тогда придется бекэнд указывать в виде ssl://mail.test.ru:993 или tls://mail.test.ru:993

Тоже проверю, точно помню сертификат создавал отличный от имени сервака. Переименую если что.
Вот как раз нашел по моей теме, виноват походу PHP 5.6 который из сертификата стал имя FQDN брать и сравнивать. Ну насколько я понял. http://www.roundcubeforum.net/index.php?topic=22035.0


Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

24. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 07-Июл-15, 10:28 
>> так же возможно идет проверка сертификата и FQDN, на которое выдан SSL
>> сертификат, тогда придется бекэнд указывать в виде ssl://mail.test.ru:993 или tls://mail.test.ru:993
> Тоже проверю, точно помню сертификат создавал отличный от имени сервака. Переименую если
> что.
> Вот как раз нашел по моей теме, виноват походу PHP 5.6 который
> из сертификата стал имя FQDN брать и сравнивать. Ну насколько я
> понял. http://www.roundcubeforum.net/index.php?topic=22035.0

В общем переименовал сервак днс настроил на имя из сертификата, ошибка таже. Из прошлой ссылки пробовал конфиг менять тоже глухо все тоже самое.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

20. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 23:12 
> вообще roundcube без ssl/tls у вас работает? пускает пользователей?
> а если прописать явно из этих и попробовать по одному:
> $config['default_host'] = 'ssl://127.0.0.1:143'  (да да 143, ты не ошибся)
> $config['default_host'] = 'tls://127.0.0.1:143'  (да да 143, ты не ошибся)
> $config['default_host'] = 'ssl://127.0.0.1:993'
> $config['default_host'] = 'tls://127.0.0.1:993'

Сейчас проверю, вчера вроде так делал эффекта не было.
Да я там в заголовке писал, отрубаю всю эту бабуйню с tls и сертификатами и сразу roundcube пускает без проблем по 110 порту.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

22. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 06-Июл-15, 23:45 
>> вообще roundcube без ssl/tls у вас работает? пускает пользователей?
>> а если прописать явно из этих и попробовать по одному:
>> $config['default_host'] = 'ssl://127.0.0.1:143'  (да да 143, ты не ошибся)
>> $config['default_host'] = 'tls://127.0.0.1:143'  (да да 143, ты не ошибся)
>> $config['default_host'] = 'ssl://127.0.0.1:993'
>> $config['default_host'] = 'tls://127.0.0.1:993'
> Сейчас проверю, вчера вроде так делал эффекта не было.
> Да я там в заголовке писал, отрубаю всю эту бабуйню с tls
> и сертификатами и сразу roundcube пускает без проблем по 110 порту.

Вот на 143 порт ругается
[06-Jul-2015 23:28:48 Europe/Moscow] PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line 913
[06-Jul-2015 23:28:48 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from 10.10.0.90. Unable to negotiate TLS in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

А это остальное. C ssl сразу отлуп дает даже не задумывается.
[06-Jul-2015 23:32:27 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from 10.10.0.90. Empty startup greeting (127.0.0.1:993) in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
[06-Jul-2015 23:33:37 +0300]: <u95mgrt5> IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Could not connect to ssl://127.0.0.1:993: Unknown reason in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
[06-Jul-2015 23:33:41 +0300]: <u95mgrt5> IMAP Error: Login failed for ivanov@test.ru from 10.10.0.90. Could not connect to ssl://127.0.0.1:993: Unknown reason in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
[06-Jul-2015 23:34:21 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from 10.10.0.90. Could not connect to ssl://127.0.0.1:143: Unknown reason in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
[06-Jul-2015 23:35:15 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from 10.10.0.90. Could not connect to ssl://mail.test.ru:993: Unknown reason in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)
[06-Jul-2015 23:36:54 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from 10.10.0.90. Empty startup greeting (mail.test.ru:993) in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

30. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от omnomnim on 07-Июл-15, 14:18 
а ну попробуй https://bbs.archlinux.org/viewtopic.php?id=193012

у меня 5.5.9 и честные сертификаты на серваках, посему наверно и не столкнулся с такой хнёй

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

31. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 07-Июл-15, 15:14 
> а ну попробуй https://bbs.archlinux.org/viewtopic.php?id=193012
> у меня 5.5.9 и честные сертификаты на серваках, посему наверно и не
> столкнулся с такой хнёй

Уже пробовал это, только отсюда http://www.roundcubeforum.net/index.php?topic=22035.0
Глухо. Ошибка та же. Имя хоста менял как в сертификате прописан был.

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

32. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 07-Июл-15, 19:54 
> Вот на 143 порт ругается
> [06-Jul-2015 23:28:48 Europe/Moscow] PHP Warning:  stream_socket_enable_crypto(): SSL
> operation failed with code 1. OpenSSL Error messages:
> error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
> in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap_generic.php on line
> 913
> [06-Jul-2015 23:28:48 +0300]: <u95mgrt5> IMAP Error: Login failed for petrov@test.ru from
> 10.10.0.90. Unable to negotiate TLS in /var/www/html/roundcube/program/lib/Roundcube/rcube_imap.php
> on line 198 (POST /roundcube/?_task=login?_task=login&_action=login)

попробуйте ради эксперимента закомментировать все ваши херомантии c отлючением всякий версий TLS и шифров:
#ssl_protocols = TLSv1 TLSv1.1 TLSv1.2 !SSLv2 !SSLv3
#ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL

их уже потом после того как получится хоть как-то по SSL или TLS успешно подключится к IMAP'у настроить, по уму (а не как было взято копи пастом откуда-то)

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

33. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от eRIC (ok) on 07-Июл-15, 19:56 
> Да я там в заголовке писал, отрубаю всю эту бабуйню с tls
> и сертификатами и сразу roundcube пускает без проблем по 110 порту.

по 110 порту вы подключались по POP3 протоколу, а не протоколу IMAP


Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

34. "Проблема авторизации roundcube в dovecot+postfix"  +/
Сообщение от kib025 (ok) on 08-Июл-15, 16:49 
>> Да я там в заголовке писал, отрубаю всю эту бабуйню с tls
>> и сертификатами и сразу roundcube пускает без проблем по 110 порту.
> по 110 порту вы подключались по POP3 протоколу, а не протоколу IMAP

Угу ошибся конечно не 110, голова уже пухла просто.

Самое главное, что я все-таки решил проблему. Все подключается.
Конфиги те же. Только удалил уже созданные сертификаты postfix и dovecot.
Создал их по новой но уже с самоподписанным центром сертификации по этому мануалу http://help.ubuntu.ru/wiki/postfix_dovecot_ldap_ubuntu_10_04
От туда взял секцию авторизации SSL в конфиге dovetcot, ну и пути к сертификатам поменял + CA сертификат добавил.

disable_plaintext_auth = yes
ssl = yes
ssl_cert_file = /etc/ssl/certs/mydovecot.pem
ssl_key_file = /etc/ssl/private/server.key
ssl_ca_file = /etc/ssl/certs/cacert.pem
ssl_protocols = TLSv1 TLSv1.1 TLSv1.2 !SSLv2 !SSLv3
ssl_cipher_list = ALL:!LOW:!SSLv2:ALL:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM

Имя сервера как в сертификате. DNS поправил.
В итоге завелось с таким параметром roundcube
$config['default_host'] = 'localhost'
Порты и тип авторизации закоментил.

Но начало работать странно, после того как сначала выставил (dovecot) ssl = no все заработало, потом вернул ssl = yes. B все осталось работать.
Работу с сертификатами The Bat проверил он сейчас капризный зараза самоподписанные не жрет только с доверенного центра подавай.
В общем вот так. Завтра попробую с нуля еще раз поднять для проверки, благо усе ходы записаны )).
Всем откликнувшимся спасибо.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру