LINUX.ORG.RU
решено ФорумAdmin

Правильная настройка Roundcube

 ,


0

1

Есть свой почтовик, Postfix+Dovecot+MariaDB. Работает нормально, авторизация через Thunderbird проходит, письма приходят и отправляются, SSL прикрутил.

Решил добавить Roundcube и обосрался. Стоит версия LTS 1.5.9, с гитхаба. Установил пакеты:

php-cli php8.2-mysql php-json php-gd php-ldap php-odbc php8.2-common php8.2-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-imap php php-fpm php-curl php-mysql aspell aspell-en fonts-glyphicons-halflings libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-jquery-minicolors libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php-intl php-imagick

enable --now php8.2-fpm

Прикрутил SSL для веб морды (она напрямую в MYDOMAIN.COM), конфиг Nginx:

server {
    listen 80;
        listen [::]:80;
    server_name YOUR_DOMAIN;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name YOUR_DOMAIN.COM;
    root /var/www/html;
    index index.php index.html index.htm;
    
    ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem;

    location / {
        try_files  $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /var/www/html/;
    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /var/www/html$fastcgi_script_name;
    include fastcgi_params;
    }
}

Дал права: chown -R www-data:www-data /var/www/html/, chmod 775 /var/www/html/temp/ /var/www/html/logs/

Скопировал конфиг: cp /var/www/html/config/config.inc.php.sample /var/www/html/config/config.inc.php

Указал: $config['db_dsnw'] = 'mysql://mailuser:PASSWORD@127.0.0.1/mailserver;

Теперь, на странице MYDOMAIN.COM страница входа в панель. Ошибка:

Oops... something went wrong!

An internal error has occurred. Your request cannot be processed at this time.

For administrators: Please check the application and/or server error logs for more information.

В логах по пути /var/www/html/logs только файл htaccess, с содержимым:

<ifModule mod_authz_core.c>
    Require all denied
</ifModule>
<ifModule !mod_authz_core.c>
    Deny from all
</ifModule>

Кроме этого, я крутил дополнительно настройки, пытаясь через каталог installer настроить. Тогда ловил ошибку:

DB Schema:  NOT OK(Error creating database schema: [1142] CREATE command denied to user 'mailuser'@'localhost' for table `mailserver`.`session` (SQL Query: CREATE TABLE `session` (
`sess_id` varchar(128) NOT NULL,
`changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`ip` varchar(40) NOT NULL,
`vars` mediumtext NOT NULL,
PRIMARY KEY(`sess_id`),
INDEX `changed_index` (`changed`)
) ROW_FORMAT=DYNAMIC ENGINE=INNODB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci))

Создал пустую базу данных, указал информацию для подключения - не помогло. (Хотя когда крутил раньше, указывая пустую базу данных - веб морда логина отображалась). Хотел перенести информацию в пустую базу данных - получил 1045 ошибку. Видимо потому что юзера указывал не в формате 'username'@'localhost', а в формате 'username'@'127.0.0.1'. В общем, это на тестовом ВПС, бекап есть. Потому не к спеху, но хочеться разобраться, как правильно настраивать? Или же все снести и делать заново? Создать пустую базу данных, подключить, а уже после, создать таблицу и заполнить данными для логинов и паролей? Таблицу и данные я через консоль вношу.

★★

Последнее исправление: Riniko (всего исправлений: 1)
server {
    listen 127.0.0.1:443 ssl;
    server_name YOUR_DOMAIN.COM;
    root /var/www/public/;
    index index.html index.php;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_protocols TLSv1.2 TLSv1.3;

    location ~ (\.php)$ {
        fastcgi_index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME /index.php;
        if (-e $request_filename) {
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        }
    }

    location / {
        if ($request_uri ~* "\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt|pdf)$") {
           expires max;
        }
        add_header Front-End-Https on;
        add_header HTTPS on;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param SCRIPT_NAME /index.php;
        if (!-f $request_filename) {
           fastcgi_pass unix:/run/php/php8.2-fpm.sock;
           break;
        }
    }
}

в /etc/php8.2/fpm/php-fpm.d/www.conf проверьте:

user = nginx
group = nginx
listen = /run/php/php8.2-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Obezyan
()

Ну так разреши юзеру со 127.0.0.1 с паролем заходить

GRANT ALL ON mailserver.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
Потом убедись из консоли, что этим юзером через 127.0.0.1 с указанным паролем можно подключиться, а потом уже мучай roundcube

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

Изменил конфиг nginx как порекомендовал Obezyan.

Затем, создал отдельного пользователя CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'PASSWORD';, создал базу данных, дал права: GRANT ALL PRIVILEGES ON roundcubemail.* TO 'roundcube'@'localhost';. Заполнил базу данных:

CREATE TABLE virtual_domains (
id int(11) NOT NULL auto_increment,
name varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE virtual_users (
id int(11) NOT NULL auto_increment,
domain_id int(11) NOT NULL,
password varchar(106) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY email (email),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE virtual_aliases (
id int(11) NOT NULL auto_increment,
domain_id int(11) NOT NULL,
source varchar(100) NOT NULL,
destination varchar(100) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Указал данные для авторизации в /var/www/html/config/config.inc.php. Проверил, авторизовавшийсь под юзером: mysql -u roundcube -p,

MariaDB [(none)]> SELECT user();
+---------------------+
| user()              |
+---------------------+
| roundcube@localhost |
+---------------------+
1 row in set (0.000 sec)

При попытке входа через веб морду, ошибка Connection to storage server failed..

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

В логах, ошибка:

[27-Mar-2025 07:47:08 UTC] PHP Deprecated:  Return type of zipdownload_mbox_filter::filter($in, $out, &$consumed, $closing) should either be compatible with php_user_filter::filter($in, $out, &$consumed, bool $closing): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/plugins/zipdownload/zipdownload.php on line 405

405 строка: function filter($in, $out, &$consumed, $closing)

А зачем ты создавал эти таблицы?

Да опыта с базами данных не было никогда. Я почему-то думал, что 1 база данных, в которой таблицы есть, в которых внесены условно данные от user@mail.com:password. Подключил, Roundcube использует её. В каждой базе данных свои данные. Но тут я когда вносил данные в базу, то делал это так:

INSERT INTO mailserver.virtual_users (domain_id, password , email) VALUES ('1', 'HASH_PASSWORD', 'USERNAME@SITENAME.COM');

но тут не подключался к конкретной базе данных. А просто зашел под рутом и сделал. Может в этом проблема?

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

Может в этом проблема?

Да, в этом проблема, конечно. Круглокуб не лезет в БД почты за пользователями почты (ему надо свою, вспомогательную бд для работы), надо readme и install читать при установке всё же, а не действовать методом «тыка», как тебе кажется.

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

Да я прочитал, загрузил снимок, на момент работающей почты без Roundcube. Сделал в точности как указано:

CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER roundcube@localhost IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;

FLUSH PRIVILEGES;

В логах ошибки:

PHP Deprecated:  Creation of dynamic property rcmail::$imap is deprecated in /var/www/html/program/lib/Roundcube/rcube.php on line 329

IMAP Error: Login failed for username@sitename.com against localhost from 192.42.116.197. Could not connect to localhost:143: Connection refused in /var/www/html/program/lib/Roundcube/rcube_imap.php on line 211 (POST /?_task=login&_action=login)

PHP Deprecated:  Return type of zipdownload_mbox_filter::filter($in, $out, &$consumed, $closing) should either be compatible with php_user_filter::filter($in, $out, &$consumed, bool $closing): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/plugins/zipdownload/zipdownload.php on line 405

Закомментировал строку: $this->imap = $this->storage; в /var/www/html/program/lib/Roundcube/rcube.php on line 329. Ошибка пропала.

Возможно, дело в том, что я вручную создавал таблицы и данные вносил? В мануалах как раз делается это через PHPMyAdmin и PostfixAdmin. Версия mysql Ver 15.1 Distrib 10.11.6-MariaDB.

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

Возможно, дело в том, что я вручную создавал таблицы и данные вносил? В мануалах как раз делается это через PHPMyAdmin и PostfixAdmin.

Да что ж такое то :))

Ещё раз, для тех, кто не любит читать документацию. База в mysql для roundcube указывается НЕ С ПОЧТОВЫМИ ПОЛЬЗОВАТЕЛЯМИ (которая заполняется через postfixadmin/etc), а ДРУГАЯ. Которую roundcube использует так, как ему требуется.

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

Так я и создал другую, пустую базу данных для Roundcube. Но авторизоваться я все равно не могу под своим почтовым аккаунтом. Ошибки я вижу, не понимаю как их фиксить.

Riniko ★★
() автор топика
Ответ на: комментарий от Riniko
IMAP Error: Login failed for username@sitename.com against localhost from 192.42.116.197. Could not connect to localhost:143: Connection refused in /var/www/html/program/lib/Roundcube/rcube_imap.php on line 211 (POST /?_task=login&_action=login)

Вот поэтому не можешь аутентифицироваться. Roundcube берёт пользователей из IMAP.

Собственно, это всё ещё раз дополнительно написано в комментариях в config.inc.php.sample, который ты должен скорировать и редактировать.

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

Снова загрузил снепшот, где почта настроена но без Roundcube.

Сгенерировал сертификат, установил nginx.

Установил модули:

php-cli php8.2-mysql php-json php-gd php-ldap php-odbc php8.2-common php8.2-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-imap php php-fpm php-curl

Включил: systemctl enable --now php8.2-fpm

Установил зависимости для Roundcube:

php-mysql aspell aspell-en fonts-glyphicons-halflings libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-jquery-minicolors libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php-intl php-imagick

Загрузил архив Roundcube: cd && wget https://github.com/roundcube/roundcubemail/releases/download/1.5.9/roundcubemail-1.5.9-complete.tar.gz

Распаковал: tar xzvf roundcubemail-1.5.9-complete.tar.gz

Скопировал в каталог: cp -R roundcubemail-1.5.9/* /var/www/html

Создал базу данных для Roundcube:

CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER roundcube@localhost IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;

FLUSH PRIVILEGES;

Загрузил базу данных: mysql -uroot -p roundcubemail < /var/www/html/SQL/mysql.initial.sql

Отредактировал конфиг Nginx:

server {
    listen 80;
        listen [::]:80;
    server_name YOUR_DOMAIN;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name YOUR_DOMAIN.COM;
    root /var/www/html;
    index index.php index.html index.htm;
    
    ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem;

    location / {
        try_files  $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /var/www/html/;
    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /var/www/html$fastcgi_script_name;
    include fastcgi_params;
    }
}

Проверил на ошибки и перезапустил Nginx. Дал права: chown -R www-data:www-data /var/www/html/ chmod 775 /var/www/html/temp/ /var/www/html/logs/

Скопировал конфиг: cp /var/www/html/config/config.inc.php.sample /var/www/html/config/config.inc.php

Зашел через YOUR_DOMAIN.COM/installer, отредактировал. IMAP Settings:

default_host ssl://your_domain.com
default_port 993

Менял хост и на ssl://mail.your_domain.com, так как вижу в Thunderbird в параметрах IMAP. Там так же SSl/TLS.

SMTP Settings:

smtp_server ssl://smtp.YOUR_DOMAIN.COM
smtp_port 465
Так же менял порт на SSl/TLS.

Конечный результат:

Check config file
defaults.inc.php:  OK
config.inc.php:  OK
Check if directories are writable

Roundcube may need to write/save files into these directories
/var/www/html/temp/:  OK
/var/www/html/logs/:  OK
Check DB config
DSN (write):  OK
DB Schema:  OK
DB Write:  OK
DB Time:  OK
Test filetype detection
Fileinfo/mime_content_type configuration:  OK
Mimetype to file extension mapping:  OK

Конфиг выглядит так:

<?php
$config['db_dsnw'] = 'mysql://roundcube:PASSWORD@localhost/roundcubemail';
$config['default_host'] = 'ssl://mail.your_domain.com';
$config['smtp_server'] = 'ssl://smtp.your_domain.com';
$config['smtp_port'] = 465;
$config['des_key'] = '2ylY3XJvh510TBncMMEx7mZY';
$config['plugins'] = [];
$config['spellcheck_engine'] = 'pspell';

Test IMAP config:

Connecting to ssl://your_domain.com...

IMAP connect:  NOT OK(Login failed for username@your_domain.com against your_domain.com from 185.220.100.254. 
Could not connect to ssl://your_domain.com:993: Unknown reason)

Меняю немного IMAP:

Connecting to ssl://mail.your_domain.com...

IMAP connect:  NOT OK(Login failed for  username@your_domain.com against mail.your_domain.com from 185.220.100.254. AUTHENTICATE PLAIN: Authentication failed.)

В логе ошибки:

DB Error: SQLSTATE[HY000] [1045] Access denied for user 'roundcube'@'localhost' (using password: NO) in /var/www/html/program/lib/Roundcube/rcube_db.php on line 194 (GET /)

PHP Error: config.inc.php was not found. (GET /)

Фрагмент конфига /var/www/html/program/lib/Roundcube/rcube_db.php:

188        catch (Exception $e) {
189            $this->db_error     = true;
190            $this->db_error_msg = $e->getMessage();
191
192            rcube::raise_error([
193                    'code' => 500, 'type' => 'db',
194                    'line' => __LINE__, 'file' => __FILE__,
195                    'message' => $this->db_error_msg
196                ],
197                true, false
198            );
199
200            return null;
201        }
202
203        return $this->dbh;
204    }

В чем моя ошибка?

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

А почему у тебя пакеты то php-*, то php8.2-*? Что за дистрибутив?

P.S. Обновил кое-где сейчас roundcube до 1.6.10, всё работает штатно.

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

Откатился. Сгенерировал сертификаты для веб морды, установил Nginx.

Установил пакеты:

php-cli php8.2-mysql php-json php-gd php-ldap php-odbc php8.2-common php8.2-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-imap php php-fpm php-curl

Включил: systemctl enable --now php8.2-fpm

Установил зависимости для Roundcube:

php-mysql aspell aspell-en fonts-glyphicons-halflings libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-jquery-minicolors libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php-intl php-imagick

Установил Roundcube: cd && wget https://github.com/roundcube/roundcubemail/releases/download/1.6.10/roundcubemail-1.6.10-complete.tar.gz

tar xzvf roundcubemail-1.6.10-complete.tar.gz

cp -R roundcubemail-1.6.10/* /var/www/html

Создал базу данных:

CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER roundcube@localhost IDENTIFIED BY 'PASSWORD';

GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;

FLUSH PRIVILEGES;

Загрузил БД: mysql -uroot -p roundcubemail < /var/www/html/SQL/mysql.initial.sql

Отредактировал конфиг Nginx:


server {
    listen 80;
        listen [::]:80;
    server_name YOUR_DOMAIN;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name YOUR_DOMAIN.COM;
    root /var/www/html;
    index index.php index.html index.htm;
    
    ssl_certificate /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem;

    location / {
        try_files  $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass   unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param DOCUMENT_ROOT /var/www/html/;
    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    fastcgi_param PATH_TRANSLATED /var/www/html$fastcgi_script_name;
    include fastcgi_params;
    }
}

Проверил конфигурацию и перезагрузил Nginx. Дал права: chown -R www-data:www-data /var/www/html/, chmod 775 /var/www/html/temp/ /var/www/html/logs/

Скопировал конфиг: cp /var/www/html/config/config.inc.php.sample /var/www/html/config/config.inc.php

Указал в /var/www/html/config/config.inc.php: $config['db_dsnw'] = 'mysql://roundcube:PASSWORD@localhost/roundcubemail';

Теперь на странице https://YOUR_DOMAIN вижу ошибку: Oops... something went wrong!

На странице https://YOUR_DOMAIN/installer/ вижу:

The installer is disabled!

To enable it again, set $config['enable_installer'] = true; in RCUBE_CONFIG_DIR/config.inc.php

Добавляю в /var/www/html/config/config.inc.php: $config['enable_installer'] = true; in RCUBE_CONFIG_DIR/config.inc.php

Теперь на странице https://YOUR_DOMAIN/installer/ ошибка: Oops... something went wrong!

В логе ошибка:

DB Error: SQLSTATE[HY000] [1045] Access denied foor user 'roundcube'@'localhost' (using password: YES) in /var/www/html/program/lib/Roundcube/rcube_db.php on line 201 (GET /installer/)

Код в файле /var/www/html/program/lib/Roundcube/rcube_db.php:

195        catch (Exception $e) {
196            $this->db_error     = true;
197            $this->db_error_msg = $e->getMessage();
198
199            rcube::raise_error([
200                    'code' => 500, 'type' => 'db',
201                    'line' => __LINE__, 'file' => __FILE__,
202                    'message' => $this->db_error_msg
203                ],
204                true, false
205            );
206
207            return null;
208        }
209
210        return $this->dbh;
211    }

А почему у тебя пакеты то php-*, то php8.2-*? Что за дистрибутив?

Дистрибутив Debian 12. А пакеты, да потому что руководствовался не сильно новыми мануалами. Я поставлю все пакеты версии 8.2, посмотрю что будет.

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

DB Error: SQLSTATE[HY000] [1045] Access denied foor user ‘roundcube’@‘localhost’ (using password: YES)

Пароль неправильный, можно в php-код не лезть.

Консолью входишь в mysql/mariadb с этим пользователем и паролем?

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

В консоль войти могу:

mysql -u roundcube -p

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 140
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT user();
+---------------------+
| user()              |
+---------------------+
| roundcube@localhost |
+---------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>
Riniko ★★
() автор топика
Ответ на: комментарий от Riniko

Смотри /root/.my.cnf (или настройки БД), может, у тебя какой-нибудь old_password включен. Что распространяется на консоль, но выключено для php-mysql.

Но для начала всё-таки удостоверься, что пароль правильный вводишь, пробела нет или другого лишнего символа.

mysql -u roundcube -p

А стоп, это ты рутом локально входишь, сможешь с любым паролем зайти. Ты mysql -h localhost... заходи.

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

Подключился так: mysql -h localhost -u roundcube -p

Ответ:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 158
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT user();
+---------------------+
| user()              |
+---------------------+
| roundcube@localhost |
+---------------------+
1 row in set (0.000 sec)

Если указывать неверный пароль при авторизации:

ERROR 1045 (28000): Access denied for user 'roundcube'@'localhost' (using password: YES)

В /root/ отсутствует файл .my.cnf. Я посмотрел в /etc/mysql/my.cnf. Параметры:

[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

В /etc/alternatives/my.cnf аналогично, как и в /etc/mysql/mariadb.cnf. В /etc/mysql/my.cnf.fallback параметр только: !includedir /etc/mysql/conf.d/

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

Roundcube и mariadb на одном хосте?

Физически на одном VPS. Может ли быть проблема в том, что база данных пользователей, у меня не на localhost, а на 127.0.0.1? Если да, то принципиально ли для Roundcube создавать базу именно на localhost?

+------------------------------------------------------------------------------------------------------------------+
| Grants for roundcube@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `roundcube`@`localhost` IDENTIFIED BY PASSWORD '*9111CB1F80D5DDF24B7AD39E7571E7642C99DBC7' |
| GRANT ALL PRIVILEGES ON `roundcubemail`.* TO `roundcube`@`localhost`                                             |
+------------------------------------------------------------------------------------------------------------------+
Riniko ★★
() автор топика
Ответ на: комментарий от Riniko

Проверил. Создал пользователя: CREATE USER roundcube@127.0.0.1 IDENTIFIED BY 'PASSWORD';

Дал права на базу данных: GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@127.0.0.1;

Обновил права: FLUSH PRIVILEGES;

Указал нового пользователя в /var/www/html/config/config.inc.php: $config['db_dsnw'] = 'mysql://roundcube:PASSWORD@127.0.0.1/roundcubemail';

Ничего не поменялось с веб мордой.

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

Ну, я мог бы накатить и iRedMail, с таким же успехом. Тут скорее из принципа разобраться руками хочеться. А накатить готовое решение можно всегда :)

Riniko ★★
() автор топика
Ответ на: комментарий от Riniko
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Я бы ещё посмотрел тут. Может, там есть что-нибудь кастомное.

Если есть желание разобраться и возможность дать мне временный доступ - дай вечером, почта в профиле, после 20:00 MSK.

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

Которую вы не покажете просто потому что лень?

Слушайте, это некрасиво. Тред на форуме где автор ищет решение проблемы, а потом не отписывается о том как решил - это очень неправильно.

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

Я уже не воспроизведу по памяти. Строчка, роняющая roundcube и веб-морду и инсталлер, я её нашёл в error.log nginx’а, открыл файл перешёл на нужную строчку и просто удалил лишнее. После чего стало работать как надо.

Обычная вставка случайно излишне скопированного текста, труднонаходимая из-за замылившегося взгляда, такое бывает у всех.

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

а потом не отписывается о том как решил - это очень неправильно

Согласен, так делать нельзя. Я сюда не заходил просто. Благодаря Dimez, за что большая ему благодарность. Выяснили, первая ошибка была в том, что для включения конфигурирования по ссылке DOMAIN_NAME.COM/installer, нужно в конфиге /var/www/html/config/config.inc.php добавить строку: $config['enable_installer'] = true;. А я по невнимательности, тупо скопировал полностью: $config['enable_installer'] = true; in RCUBE_CONFIG_DIR/config.inc.php

Вторая ошибка, использование LTS версии Roundcube, а не актуальной на момент выхода.

Третья ошибка, в полях конфига config.inc.php не указывалось полное FQDN, ошибки по портам и общий синтаксис записи. Правильно делать так: $config['imap_host'] = 'ssl://mail.DOMAIN_NAME.COM:993';

$config['smtp_host'] = 'ssl://mail.DOMAIN_NAME.COM:465';

Riniko ★★
() автор топика
Последнее исправление: Riniko (всего исправлений: 3)