Я установил 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:
$ folder = imap_listmailbox ($ mbox, "{imap.example.org:143}", "*"); если ($ папки == false) { echo "Сбой вызова
\ n"; } else { foreach ($ папки как $ val) { echo $ val. «
\ n»; } } imap_close ($ mbox); ?>
Также открывается SMTP-соединение из последнего теста и закрывается после STARTTLS
. Это определенно не брандмауэр, а проблема конфигурации Postfix TLS .