Я установил 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}", "user@domain.com", "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.
В основном ты 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 проблема с конфигурацией.