LINUX.ORG.RU

Roundcube + HTTPS

 ,


0

1

Всем привет народ!!! Недавно решил настроить новый почтовый сервер (пока локальные сертификаты, позже хочу подключить сертификат от Let's Encrypt)

P.S. Debian 9.8

Настроил такую «связку»: Postfix + Dovecot 2 + MySQL + PostfixAdmin + Nginx + RoundCube + Redis + Rspamd

Настраивал протоколы POP3 и IMAP - все прекрасно работало, RoundCube по HTTP тоже отлично работал. НО - тут захотелось настроить HTTPS для RoundCube - и началось самое интересное:

В обычных логах (/var/log/mail.log) - ничего «плохого» нет.

А вот в логах RoundCube (/usr/share/nginx/html/webmail/logs/errors ) Все время вот такая ошибка

SMTP Error: Authentication failure: SMTP server does not support authentication (Code: ) in /usr/share/nginx/html/webmail/program/lib/Roundcube/rcube.php on line 1667 (POST /webmail/?_task=mail&_unlock=loading1554396107730&_lang=en_US&_framed=1&_action=send)

Походы в Google\Yandex не помогли, здесь(www.linux.org.ru) искал - тоже ничего.

Ребята которые настраивали - посмотрите мои конфиги - чувствую что чего то не хватает:

NGINX

/etc/nginx/sites-available/default

server {

listen 80;

server_name dmz.example.local;

return 301 https://$server_name$request_uri; # enforce https

}

# SSL configuration

server {

listen 443 ssl;

server_name dmz.example.local;

root /usr/share/nginx/html;

index index.php;

charset utf-8;

# SSL settings

ssl_certificate /etc/ssl/mail/public.pem;

ssl_certificate_key /etc/ssl/mail/private.key;

ssl_protocols TLSv1.2;

ssl_ciphers «EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4»;

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_ecdh_curve secp521r1;

location / {

try_files $uri $uri/ index.php;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

}

}

ROUNDCUBE

/usr/share/nginx/html/webmail/config/config.inc.php

$config['default_host'] = 'tls://%n';

$config['smtp_server'] = 'tls://%n';

$config['smtp_port'] = 587;

$config['smtp_user'] = '%u';

$config['smtp_pass'] = '%p';

$config['support_url'] = ";

$config['product_name'] = 'Roundcube Webmail';

$config['des_key'] = 'rcmail-!24ByteDESkey*Str';

$config['plugins'] = array( 'archive', 'zipdownload', );

$config['skin'] = 'larry';

$config['default_port'] = 143;

$config['smtp_auth_type'] = 'PLAIN';

$config['imap_conn_options'] = array(

'ssl' => array(

'verify_peer_name' => true,

'verify_peer' => true,

'allow_self_signed' => true,

'peer_name' => 'dmz.example.local',

'cafile' => '/etc/ssl/mail/public.pem',

),

);

$config['smtp_conn_options'] = array(

'ssl' => array(

'verify_peer_name' => true,

'verify_peer' => true,

'allow_self_signed' => true,

'peer_name' => 'dmz.example.local',

'cafile' => '/etc/ssl/mail/public.pem',

),

);

Ошибка которую выдает RoundCube в web-интерфейсе:

smtp ошибка (250) ошибка авторизации


Для начала я бы прописал в конфиг куба

$rcmail_config['force_https'] = true;

Потом здесь бы заменил

$config['default_host'] = 'tls://%n';

$config['smtp_server'] = 'tls://%n';

%n на доменное имя твоего сервака.

И да для конфигов и логов в сообщениях используй LORCODE, а не цитирование

Twissel ★★★★★ ()
Ответ на: комментарий от Twissel

Спасибо - попробовал - не помогло, в логах RoundCube - без изменений, на всяк случай покажу (Это при нажатии на кнопку «Отправить».)

tail -f /var/log/mail.log

Apr 6 21:27:37 dmz dovecot: imap(pc1@example.local): Logged out in=196 out=915

Apr 6 21:27:37 dmz dovecot: imap(pc1@example.local): Logged out in=293 out=1772

Apr 6 21:27:40 dmz dovecot: imap-login: Login: user=<pc1@example.local>, method=PLAIN, rip=127.0.0.1, lip=127.0.1.1, mpid=995, TLS, session=<xCgswuCFZtt/AAAB>

Apr 6 21:27:40 dmz dovecot: imap(pc1@example.local): Logged out in=387 out=1622

Apr 6 21:27:43 dmz dovecot: imap-login: Login: user=<pc1@example.local>, method=PLAIN, rip=127.0.0.1, lip=127.0.1.1, mpid=997, TLS, session=<co5YwuCFaNt/AAAB>

Apr 6 21:27:43 dmz dovecot: imap(pc1@example.local): Logged out in=32 out=496

Apr 6 21:27:43 dmz dovecot: imap-login: Login: user=<pc1@example.local>, method=PLAIN, rip=127.0.0.1, lip=127.0.1.1, mpid=999, TLS, session=<2w1ZwuCFatt/AAAB>

Apr 6 21:27:43 dmz dovecot: imap(pc1@example.local): Logged out in=419 out=1757

Apr 6 21:27:49 dmz postfix/smtpd[1000]: connect from localhost[127.0.0.1]

Apr 6 21:27:49 dmz postfix/smtpd[1000]: disconnect from localhost[127.0.0.1] ehlo=2 starttls=1 rset=1 quit=1 commands=5

Apr 6 21:29:22 dmz postfix/smtpd[1000]: connect from localhost[127.0.0.1]

Apr 6 21:29:22 dmz postfix/smtpd[1000]: disconnect from localhost[127.0.0.1] ehlo=2 starttls=1 rset=1 quit=1 commands=5

По какой статье настраивал, ссылку?

P.S. Собирал «по крупицам» из всего Инета - если это(https) получится - выложу сборку статей на Хабре, а сюда заброшу линк - там слишком много инфы насобирал - вот так одним предложением - не получится)

dim4k ()

ну смотри, за smtp отвечает postfix, а ты показываешь тут конфиги dovecot. Он тут пока не при делах в этой конкретной ошибке.

Поэтому давай взглянем, что у тебя умеет по авторизации postfix (smtp) . Показывай конфиги и главное логи postfix

Вообще странно, что roundcude перестал авторизоваться на postfix после того, как ты ему сделал https.

constin ★★ ()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от constin

Логи postfix я уже показывал - он пишет в /var/log/mail.log - точнее он ничего не пишет (если все в порядке)

Файл /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

biff = no

append_dot_mydomain = no

readme_directory = no

compatibility_level = 2

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination check_policy_service inet:127.0.0.1:10023

myhostname = dmz.example.local

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, localhost

local_recipient_maps = unix:passwd.byname $alias_maps

relayhost =

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

mailbox_size_limit = 0

recipient_delimiter = +

inet_interfaces = all

inet_protocols = all

virtual_mailbox_base = /home/mail

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_minimum_uid = 1024

virtual_uid_maps = static:1024

virtual_gid_maps = static:1024

virtual_transport = dovecot

dovecot_destination_recipient_limit = 1

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_tls_cert_file = /etc/ssl/mail/public.pem

smtpd_tls_key_file = /etc/ssl/mail/private.key

smtpd_use_tls = yes

smtpd_tls_auth_only = yes

smtpd_helo_required = yes

# Add rspamd milter to postfix

mtpd_milters = inet:localhost:11332

non_smtpd_milters = inet:localhost:11332

milter_protocol = 6

milter_mail_macros = i {mail_addr} {client_addr} {client_name}
 {auth_authen}

dim4k ()
Ответ на: комментарий от anonymous

Это все не то... Спасибо за помощь... Давайте на чистоту - ошибка была как обычно «в одной строке», итак уточняю ВАЖНУЮ ДЕТАЛЬ (Не повторяйте мои ошибки!!!)

Все кто ставил себе RoundCube в файле конфигурации /usr/share/nginx/html/webmail/config/config.inc.php

Меняем параметр

$rcmail_config['smtp_user'] = '%u';

На

$rcmail_config['smtp_user'] = '';

(Это все '%u')

Потому что:

// SMTP username (if required) if you use %u as the username RoundCube

// will use the current username for login

Все переводить не буду - по смыслу сами понимаете что все письма отправлялись от имени пользователя RoundCube

Есть повод выпить... чашку кофе...

P.S. Спасибо!!!

dim4k ()