Назад | Перейти на главную страницу

Невозможно подключиться к порту 993 для IMAP на сервере Ubuntu с Postfix / Dovecot / MySQL

Ubuntu 16.04.5 Apache2 MySQL Postfix с MySQL Dovecot SASL2 UFW

Я пытаюсь установить на эту машину рабочий почтовый сервер и клиент. Я последовал за этот учебник который позволяет аутентификацию через MySQL. У меня все записи в БД настроены правильно, я настроил домен / почтовый ящик в PostfixAdmin. Все шло хорошо, пока не установился тестовый логин в RoundCube. Пользователь не может подключиться через порт 993 для входа в систему.

Connecting to localhost...
IMAP connect:  NOT OK(Login failed for noreply@example.com from /ip address/. Could not connect to localhost:993: Connection refused)

Я пробовал удаленно подключиться по Telnet к {IP-адресу} 993 с помощью Connection refused также.

Сервер работает на статическом IP-адресе. RoundCube находится в ../html/webmail/ каталог и работает нормально, но такие вещи, как PHPMyAdmin, расположены в http://{ipaddress}/phpmyadmin поскольку существует несколько виртуальных хостов для веб-сервисов.

UFW имеет все необходимые порты IMAP / POP3.

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
990/tcp                    ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere                  
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
8080                       ALLOW       Anywhere                  
Postfix                    ALLOW       Anywhere                  
993                        ALLOW       Anywhere                  
143                        ALLOW       Anywhere                  
110                        ALLOW       Anywhere                  
995                        ALLOW       Anywhere                  
25                         ALLOW       Anywhere                  
25/tcp                     ALLOW       Anywhere                  
Apache Full (v6)           ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
990/tcp (v6)               ALLOW       Anywhere (v6)             
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             
8080 (v6)                  ALLOW       Anywhere (v6)             
Postfix (v6)               ALLOW       Anywhere (v6)             
993 (v6)                   ALLOW       Anywhere (v6)             
143 (v6)                   ALLOW       Anywhere (v6)             
110 (v6)                   ALLOW       Anywhere (v6)             
995 (v6)                   ALLOW       Anywhere (v6)             
25 (v6)                    ALLOW       Anywhere (v6)             
25/tcp (v6)                ALLOW       Anywhere (v6)  

Dovecot работает

# 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.13 (7b14904)
# OS: Linux 4.4.0-141-generic x86_64 Ubuntu 16.04.5 LTS ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_verbose = yes
auth_verbose_passwords = plain
mail_debug = yes
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext
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 = 
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = " imap sieve"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0600
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = dovecot
}
ssl = no
userdb {
  args = uid=vmail gid=vmail home=/var/mail/vmail/%d/%n
  driver = static
}
verbose_ssl = yes
protocol lda {
  mail_plugins = " sieve"
}

Конфигурация Postfix

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, example.com, {rootusername}, localhost.localdomain, localhost, example2.com, example3.com
myhostname = {rootusername}
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Файлы сертификата / ключа не нужны, я попытался добавить их, чтобы увидеть, будет ли разница. Сертификаты SSL предназначены для домена и некоторых поддоменов, нет mail.example.com.

Что кажется странным, так это то, что ничего не слушает порт 993, Dovecot слушает порт 4190?

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      111        14759       1084/mysqld     
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      0          34677       6207/master     
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      0          43563       7001/dovecot    
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      0          34683       6207/master     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          16213       1149/sshd       
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          34671       6207/master     
tcp        0      0 0.0.0.0:4190            0.0.0.0:*               LISTEN      0          43523       7001/dovecot    
tcp        0    212 xx.xxx.xx.xxx:22        xxx.xx.xxx.xxx:53808    ESTABLISHED 0          75664       12943/sshd: ******** 
tcp6       0      0 :::587                  :::*                    LISTEN      0          34678       6207/master     
tcp6       0      0 :::143                  :::*                    LISTEN      0          43564       7001/dovecot    
tcp6       0      0 :::80                   :::*                    LISTEN      0          18106       1614/apache2    
tcp6       0      0 :::465                  :::*                    LISTEN      0          34684       6207/master     
tcp6       0      0 :::21                   :::*                    LISTEN      0          12274       1012/vsftpd     
tcp6       0      0 :::22                   :::*                    LISTEN      0          16215       1149/sshd       
tcp6       0      0 :::25                   :::*                    LISTEN      0          34672       6207/master     
tcp6       0      0 :::443                  :::*                    LISTEN      0          18110       1614/apache2    
tcp6       0      0 :::4190                 :::*                    LISTEN      0          43524       7001/dovecot    
tcp6       0      0 xx.xxx.xx.xxx:80        xxx.xx.xxx.xxx:53832    TIME_WAIT   0          0           -  

Зачем Dovecot слушать на 4190? Я убедился, что все конфигурации верны, перезапустил все необходимые службы, даже попытался перезагрузить систему. Я делаю очевидную ошибку?

Итак, после некоторой отладки я обнаружил, что:

Ошибка 1: Предполагая 993 был правильный порт. Dovecot работает на 143. Правильная настройка сервера в Roundcube: tls://localhost.

Ошибка 2: В /etc/dovecot/dovecot-sql.conf.ext connect и password_query должен быть на отдельных линиях. Возможно, из-за копирования / вставки из руководств.

Правильно:

connect = host=localhost dbname=postfix user=postfix password=dontusep@ssw0rd

password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';

Неправильно

connect = host=localhost dbname=postfix user=postfix password=dontusep@ssw0rd password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';

Рекомендация

nano /etc/dovecot/conf.d/10-logging.conf

Устанавливать log_path = /var/log/dovecot.log чтобы отличать ошибки от системных ошибок. Dovecot запишет все, что вы напутали.

Надеюсь, это поможет кому-то в будущем.