Не удается войти на внешний сервер IMAP/POP3

Я установил Postfix, Dovecot и MySQL с помощью этого руководства ( https://www.linode.com/docs/email/postfix/troubleshooting-problems-with-postfix-dovecot-and-mysql/).

Когда я делаю следующую команду, я получаю следующий ответ:

$ openssl s_client -connect mail.domain.com:993

* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.

Я могу войти в свои виртуальные учетные записи через консоль, но когда я использую этот PHP-скрипт, он не работает (страница продолжает загружаться).

<?php 
    $mbox = imap_open("{mail.domain.com:993}", "[email protected]", "password");
?>

Когда я запускаю команду dovecot -n, я получаю следующий вывод:

$ dovecot -n

# 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.13 (7b14904)
# OS: Linux 4.4.0-130-generic x86_64 Ubuntu 16.04.3 LTS
auth_debug = yes
auth_verbose = yes
log_path = /var/log/dovecot.log
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_privileged_group = mail
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
}
protocols = imap pop3 lmtp
service auth-worker {
  user = vmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = dovecot
}
service imap-login {
  inet_listener imap {
    port = 0
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
}
ssl = required
ssl_cert = </etc/dovecot/private/dovecot.crt
ssl_key = </etc/dovecot/private/dovecot.key
userdb {
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
  driver = static
}

Я использую брандмауэр "UFW".

$ ufw status

Status: active

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere
993                        ALLOW       Anywhere
995                        ALLOW       Anywhere
587                        ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
Dovecot POP3               ALLOW       Anywhere
Dovecot Secure IMAP        ALLOW       Anywhere
Dovecot Secure POP3        ALLOW       Anywhere
Postfix                    ALLOW       Anywhere
Postfix SMTPS              ALLOW       Anywhere
Postfix Submission         ALLOW       Anywhere
Apache Full (v6)           ALLOW       Anywhere (v6)
993 (v6)                   ALLOW       Anywhere (v6)
995 (v6)                   ALLOW       Anywhere (v6)
587 (v6)                   ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)
Dovecot POP3 (v6)          ALLOW       Anywhere (v6)
Dovecot Secure IMAP (v6)   ALLOW       Anywhere (v6)
Dovecot Secure POP3 (v6)   ALLOW       Anywhere (v6)
Postfix (v6)               ALLOW       Anywhere (v6)
Postfix SMTPS (v6)         ALLOW       Anywhere (v6)
Postfix Submission (v6)    ALLOW       Anywhere (v6)

Это проблема с брандмауэром? Кажется, я могу подключиться только с локального хоста, а не с удаленного.

Заранее спасибо.

PS: если вам нужно больше информации, я буду рад поделиться. Но я не знаю точно, какая информация вам нужна для решения этой проблемы.

Изменить: мой SMTP-сервер также не работает. Я проверил это с помощью этого ( https://www.wormly.com/test-smtp-server) инструмента.

Выход:

Resolving hostname...
Connecting...
Connection: opening to mail.domain.com:25, timeout=300, options=array (
                 )
Connection: opened
SERVER -> CLIENT: 220 mail.domain.com ESMTP Postfix (Ubuntu)
CLIENT -> SERVER: EHLO tools.wormly.com
SERVER -> CLIENT: 250-mail.domain.com
                 250-PIPELINING
                 250-SIZE 10240000
                 250-VRFY
                 250-ETRN
                 250-STARTTLS
                 250-ENHANCEDSTATUSCODES
                 250-8BITMIME
                 250 DSN
CLIENT -> SERVER: STARTTLS
SERVER -> CLIENT: 454 4.7.0 TLS not available due to local problem
SMTP ERROR: STARTTLS command failed: 454 4.7.0 TLS not available due to local problem
2018-07-07 17:06:08 SMTP Error: Could not connect to SMTP host.
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 Bye
Connection: closed
2018-07-07 17:06:08 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Message sending failed.

1 ответ

В основном вы imap_open() поток IMAP в почтовый ящик, ничего не делать с ним и оставить его открытым без imap_close(), Поскольку распечатывать нечего, но сценарий еще не завершен, ожидается загрузка пустой страницы. Вы можете, вероятно, подтвердить это из mail.log показывая связь. После вашего imap_open() попробуйте, например, это из примера № 2:

$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

if ($folders == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($folders as $val) {
        echo $val . "<br />\n";
    }
}

imap_close($mbox);
?>

Также SMTP-соединение из последнего теста открывается и закрывается после STARTTLS, Это определенно не брандмауэр, а проблема конфигурации Postfix TLS.

Другие вопросы по тегам