Почтовый сервер Dovecot + Postfix / -Admin Проверка подлинности не удалась
756
Cyberpunk7711
все. Я искал ошибку в течение нескольких дней ..
Когда я хочу соединить свою веб-почту с моим сервером электронной почты через Imap / Smtp, я получаю эту ошибку: «Ошибка аутентификации». Когда вам нужна дополнительная информация, пожалуйста, спрашивайте. Ребята, можете найти проблему с моей конфигурацией?
С уважением.
Сообщение об ошибке:
Nov 19 19:00:43 mail dovecot: imap-login: Aborted login (no auth attempts in 0 secs): user=<>, rip=145.eineip, lip=188nocheineip, session=<mSW4Swh71NCR/idK> Nov 19 19:01:03 mail dovecot: imap-login: Disconnected (auth failed, 3 attempts in 14 secs): user=<test>, method=PLAIN, rip=145.eineip, lip=188.eineip, session=<omsPTAh71tCR/idK> Nov 19 19:01:29 mail dovecot: imap-login: Disconnected (auth failed, 3 attempts in 26 secs): user=<test@domain.eu>, method=PLAIN, rip=145.weitereip, lip=188.nochip, session=<wq7fTAh719CR/idK>
Конфигурация Dovecot:
###Dovecot service ################## service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } } # Change this to where your mail root is, this needs to match whatever structure postfix expects.... # See also: https://wiki.dovecot.org/MailLocation - %d domain, %u full username, %n user part (%u with no domain) mail_location = maildir:/var/mail/vmail/%u/ namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } protocols = "imap pop3" # change to 'no' if you don't have ssl cert/keys, and comment out ssl_cert/ssl_key ssl = no #ssl_cert = </etc/letsencrypt/live/mail.domain.eu/cert.pem #ssl_key = </etc/letsencrypt/live/mail.domain.eu/privkey.pem # login is for outlook express smtpd auth auth_mechanisms = plain login # If you're having trouble, try uncommenting these : #auth_debug = yes #auth_debug_passwords = yes userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } # Uncomment this if you want Postfix to be able to do smtpd auth through dovecot # At a minimum Postfix probably needs : smtpd_sasl_type = dovecot # And additionally: smtpd_sasl_path = private/auth service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } } # Needs to match Postfix virtual_uid_maps first_valid_uid = 1001 # allow plaintext auth (change to 'yes' to block plaintext passwords) disable_plaintext_auth = no
Конфигурация Postfix:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $domain ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on # fresh installs. compatibility_level = 2 # TLS parameters #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=no #smtpd_tls_session_cache_database = btree:$/smtpd_scache #smtp_tls_session_cache_database = btree:$/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = mail alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = mail.domain.eu, localhost.domain.eu, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all ####### virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf # if you let postfix store your mails directly (without using maildrop, dovecot deliver etc.) #virtual_mailbox_base = /var/mail/vmail # Additional for quota support virtual_create_maildirsize = yes virtual_mailbox_extended = yes #virtual_mailbox_limit_maps = proxy: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, please try again later. virtual_overquota_bounce = yes
Dovecot SQL
connect = host=localhost dbname=name user=name password=psw # Use either driver = mysql # Or # driver = pgsql # Default password scheme - change to match your Postfixadmin setting. # depends on your $CONF['encrypt'] setting: # md5crypt -> MD5-CRYPT # md5 -> PLAIN-MD5 # cleartext -> PLAIN default_pass_scheme = MD5-CRYPT # Query to retrieve password. user can be used to retrieve username in other # formats also. password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' # Query to retrieve user information, note uid matches dovecot.conf AND Postfix virtual_uid_maps parameter. user_query = SELECT maildir, 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active='1' # MYSQL : user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, 1001 AS uid, 1001 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1' # PostgreSQL : (no Quota though) : # user_query = SELECT '/var/vmail/mail/' || maildir AS home, 1001 as uid, 1001 as gid FROM mailbox WHERE username = '%u' AND active = '1'
1 ответ на вопрос
0
davidgo
Несколько вещей - ваша способность войти в веб-почту не имеет ничего общего с Postfix или SMTP (это может быть актуально для фактической отправки электронной почты, больше ничего)
Похоже, вы предполагаете, что в веб-почте используется аутентификация IMAP (что является разумным, но не гарантированным предположением). Вы должны запустить IMAP и проверить его с помощью обычного почтового клиента, такого как Thunderbird или outlook. (Или используйте команды telnet и IMAP, но это довольно продвинуто), чтобы проверить работу IMAP.
Ваша текущая конфигурация dovecot, похоже, использует только базу данных SQL для аутентификации пользователей. Вам нужно либо изменить это поведение, либо добавить администратора в базу данных SQL. (Вы можете увидеть это поведение, потому что драйвер для проверки пользователя и пароля в конфигурации является SQL). Вы не предоставили конфигурационный файл SQL / etc / dovecot / dovecot-sql.conf, но этот файл должен указать, какую базу данных и поля необходимо использовать.
В качестве альтернативы измените драйвер для использования системной базы данных согласно https://wiki.dovecot.org/PasswordDatabase/PAM - обратите внимание, что это может снизить безопасность вашей системы. Вам также нужно будет изменить конфигурацию, чтобы позволить автору открытого текста сделать эту работу.
Привет. Спасибо за ваш ответ. в моем вопросе вы можете увидеть мой sql conf. У меня уже есть пользователь БД. :/ Возможно ли, что dovecot не заглядывает в базу данных?
Cyberpunk7711 5 лет назад
0
В верхней части вашего файла Dovecot SQL есть строка «connect = host = localhost dbname = name user = name password = psw» - если эта строка не соответствует сведениям о соединении, требуемым базой данных, Dovecot не будет аутентифицироваться. Аналогично, если данные пользователя в базе данных не совпадают, произойдет сбой. Я также замечаю, что (а) у вас есть 2 оператора user_query, вы должны закомментировать неправильный и (б) ваш запрос требует, чтобы «active = 1», поэтому убедитесь, что это верно для пользователя в базе данных. ..
davidgo 5 лет назад
0
Для дальнейшей отладки я бы включил ведение журнала запросов в MySQL и посмотрел, что это дает. Просмотр журналов MySQL должен показать, есть ли ошибки соединения, а просмотр журналов запросов (и воспроизведение запросов) должен дать вам хорошее представление о том, где происходит сбой и почему.
davidgo 5 лет назад
0
Другая вещь, на которую стоит обратить внимание, - это способ шифрования пароля в базе данных. У вас есть default_pass_scheme MD5-CRYPT. Согласно https://wiki.dovecot.org/Authentication/PasswordSchemes, зашифрованный пароль должен начинаться с $ 1 $ - если это не так, я ожидаю, что он не будет работать. У вас может быть больше гибкости, если вы измените MD5-CRYPT на CRYPT.
davidgo 5 лет назад
0
извините, что я трачу ваше время. строка обычно заполняется моим паролем и т. д., но я не хочу делиться этим с другими: я пробовал оба типа user_query, но каждый раз получаю одну и ту же ошибку. Возможно ли, что user_query или user_password не так? Я могу найти хорошее решение через Интернет. У меня также есть "active = 1" в конце. Я также изменил MD5-CRYPT на CRYPT. Когда я использую $ 1 $ CRYPT, я получил ошибку. Я также активировал мою отладку sql. но я получил только эти ошибки:
Cyberpunk7711 5 лет назад
0
Почтовый сервер в начале очень сложный ... 20.11 22:47:51 mail dovecot: imap-login: Disconnected (без попыток авторизации в течение 0 секунд): user = <>, rip = IP, lip = IP, обеспеченный, сеанс = 20 ноября 22:47:51 mail postfix / smtpd [30386]: подключение с mail.domain.eu [IP]
Cyberpunk7711 5 лет назад
0
20 ноября 22:47:51 mail postfix / smtpd [30386]: потеря соединения после EHLO из mail.domain.eu [1IP] 20 ноября 22:47:51 mail postfix / smtpd [30386]: отключение от mail.domain.eu [IP] ehlo = 1 команды = 1 ноября 20 22:47:56 mail dovecot: imap-login: отключено (ошибка аутентификации, 1 попытка за 2 секунды): user =, метод = PLAIN, рип = 188.IP, lip = IP, защищенный, сеанс =
Cyberpunk7711 5 лет назад
0
Поскольку проблема, скорее всего, существует между Dovecot и MySQL, вам действительно нужно включить отладку для MySQL - вы хотите (а) посмотреть, разрешает ли MySQL подключение к Dovecot и работает ли (b), какие запросы видит MySQL. Как только вы знаете запросы, вы можете воспроизвести их и посмотреть, получаете ли вы ожидаемые результаты.
davidgo 5 лет назад
0