Mailserver Dovecot + Postfix / -Admin Uwierzytelnienie nie powiodło się

0

wszyscy. Od kilku dni szukam błędu…

Kiedy chcę połączyć moją pocztę internetową z serwerem poczty e-mail za pośrednictwem Imap / Smtp, pojawia się błąd: „Uwierzytelnianie nie powiodło się”. Gdy potrzebujesz więcej informacji, zapytaj. Czy możecie znaleźć mój problem z konfiguracją?

Z poważaniem.

Komunikat o błędzie:

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=<[email protected]>, method=PLAIN, rip=145.weitereip, lip=188.nochip, session=<wq7fTAh719CR/idK>

Konfiguracja 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

Konfiguracja 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:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/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'
Cyberpunk7711
źródło

Odpowiedzi:

0

Kilka rzeczy - twoja możliwość zalogowania się do poczty internetowej nie ma nic wspólnego z Postfix lub SMTP (może to być istotne dla faktycznego wysyłania e-maili, nic więcej)

Wygląda na to, że zakładasz, że poczta internetowa używa uwierzytelniania IMAP (co jest rozsądnym, ale nie gwarantowanym założeniem). Powinieneś uruchomić IMAP i sprawdzić go za pomocą zwykłego klienta pocztowego, takiego jak thunderbird lub Outlook. (Lub użyj poleceń telnet i IMAP, ale jest to dość zaawansowane), aby sprawdzić, czy działa IMAP.

Wygląda na to, że bieżąca konfiguracja dovecot używa tylko bazy danych SQL do uwierzytelniania użytkowników. Musisz zmienić to zachowanie lub dodać administratora do bazy danych SQL. (Możesz zobaczyć to zachowanie, ponieważ sterownik do sprawdzenia użytkownika i hasła w konfiguracji to SQL). Nie dostarczyłeś pliku konfiguracyjnego SQL / etc / dovecot / dovecot-sql.conf, ale ten plik powinien powiedzieć ci, jakiej bazy danych i pól należy użyć.

Alternatywnie zmień sterownik, aby korzystał z systemowej bazy danych zgodnie z https://wiki.dovecot.org/PasswordDatabase/PAM - pamiętaj, że może to zmniejszyć bezpieczeństwo twojego systemu. Konieczna będzie również zmiana konfiguracji, aby umożliwić autorowi tekstu jawnego wykonanie tej czynności.

Davidgo
źródło
Dzień dobry. Dziękuję za Twoją odpowiedź. w moim pytaniu możesz zobaczyć moją sql conf. mam już użytkownika db.:/ czy jest możliwe, że dovecot nie będzie przeglądał bazy danych?
Cyberpunk7711,
U góry pliku SQL Dovecot znajduje się wiersz „connect = host = localhost dbname = nazwa użytkownika = nazwa hasła = psw” - jeśli ten wiersz nie odpowiada szczegółom połączenia wymaganym przez bazę danych, Dovecot nie zostanie uwierzytelniony. Podobnie jeśli dane użytkownika w bazie danych nie są zgodne, to się nie powiedzie. Zauważyłem również, że (a) Masz 2 instrukcje user_query, powinieneś skomentować niepoprawną i (b) Twoja instrukcja zapytania wymaga, aby „active = 1”, więc upewnij się, że dotyczy to użytkownika w bazie danych. ..
davidgo,
Aby dalej to debugować, włączyłem rejestrowanie zapytań w MySQL i zobaczę, co się dzieje. Przeglądanie dzienników MySQL powinno ujawnić, czy występują błędy połączenia, a przeglądanie zapytań (i odtwarzanie zapytań) powinno dać ci dobry pomysł na to, gdzie występuje awaria i dlaczego.
davidgo,
Inną rzeczą, na którą należy zwrócić uwagę, jest sposób szyfrowania hasła w bazie danych. Masz domyślny schemat_passu dla MD5-CRYPT. Według wiki.dovecot.org/Authentication/PasswordSchemes zaszyfrowane hasło musi zacząć się od 1 $ - jeśli tak nie jest, spodziewam się, że nie zadziała. Możesz mieć większą elastyczność, jeśli zmienisz MD5-CRYPT na CRYPT.
davidgo,
przepraszam, że marnuję twój czas. wiersz jest zwykle wypełniony moim hasłem itp., ale nie chcę się nim dzielić z innymi: DI wypróbowałem oba typy user_query, ale otrzymuję za każdym razem ten sam błąd. czy jest możliwe, że zapytanie_użytkownika lub hasło_użytkownika jest nieprawidłowe? Za pomocą Internetu mogę znaleźć dobre rozwiązanie. Na końcu mam też „active = 1”. Zmieniłem również MD5-CRYPT na CRYPT. Kiedy używam $ 1 $ CRYPT, dostałem błąd. Aktywowałem również mój debugowanie SQL. ale dostałem tylko te błędy:
Cyberpunk7711,