我已经安装了一个基于Postfix和Dovecot的新邮件服务器。 在配置所有内容时,设置很好。没有错误输出或有些错误。
问题是: 当我尝试通过客户端连接到邮件帐户时,它将在身份验证时空闲。
在/var/log/mail.log中
dovecot: auth-worker(15467): Error: mysql(localhost): Connect failed to database (mail): Access denied for user 'mail'@'localhost' (using password: YES) - waiting for 1 seconds before retry
所以,我会说Dovecot无法连接到数据库/不会认证。
但我不明白为什么。
数据库用户具有该数据库的正确权限/还尝试刷新权限。
我读到有时候auth因为加密算法而失败了。
所以我用OLD_PASSWORD
函数设置邮件用户密码(找到here)。也不会工作。
这是我的驱动程序conf(dovecot-mysql.conf)
driver = mysql
connect = host=localhost dbname=mail user=mail password='mypassword'
default_pass_scheme = PLAIN-MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('maildir:/var/vmail/',maildir) AS mail, 6000 AS uid, 6000 AS gid FROM mailbox WHERE username = '%u'
(mypassword在此处更改)
所以我不知道为什么它不会给我访问数据库。 有人有想法吗?
我将不胜感激任何帮助!
译注:
服务器:Debian v7.9
数据库:MySQL 5.6.25
Dovecot:2.1.7
后缀:2.9.6
postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
inet_interfaces = all
local_transport = virtual
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = markheumueller.de, localhost
myhostname = h2377359.stratoserver.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth_dovecot
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql-sender-login-maps.cf
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/postfix/ssl/mailserver.crt
smtpd_tls_key_file = /etc/postfix/ssl/mailserver.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_gid_maps = static:6000
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-domains-maps.cf
virtual_mailbox_limit = 0
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_minimum_uid = 104
virtual_transport = dovecot
virtual_uid_maps = static:6000
答案 0 :(得分:1)
日志文件中的错误显然是从Mysql Server转发的。 并且它声明用户邮件无法连接到localhost。
你需要检查mysql-server:
看看是否真的有这样的条目:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
如果有这样一行,请尝试将设置更改为:
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password='mypassword'
有时它有帮助。
如果“netstat”命令器不提供包含127.0.0.1:3306的行,
如果它运行并且听起来没问题,但是仍然没有使用mysql帐户和数据库使用此设置通过dovecot / postfix进行身份验证,那么尝试通过终端窗口中的命令行使用相同的凭据进行连接:
mysql -u mail -h localhost mail -p
您应该成功进行此类控制台登录。
如果您收到与日志文件类似的错误,执行此登录尝试,则表示您未在mysql中正确设置用户访问参数。只需使用正确的GRANT SQL Sentence,就像我在这里一样:
~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 505705
Server version: 5.5.49-0+deb8u1 (Debian)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'localhost' IDENTIFIED BY 'your.password.here';
mysql> GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'127.0.0.1' IDENTIFIED BY 'your.password.here';
在mysql中使用GRANT语句,您不需要FLASH PRIVILEGES。
您可以限制用户权限,而不是GRANT ALL PRIVILEGES部分,只需使用: 在邮件上使用GRANT。* TO'mail'@'127.0.0.1'由'your.password.here'识别; 邮件上的GRANT SELECT。* TO'mail'@'127.0.0.1'由'your.password.here'识别;
希望这有帮助。
答案 1 :(得分:0)
有相同的错误。删除“ default_pass_scheme”行,然后重试。