Во-первых, порт 25 открыт, но он не принимает никаких внешних подключений.

Во-первых, порт 25 открыт, но он не принимает никаких внешних подключений.

Думаю, это две типичные проблемы, по крайней мере первая. Пытаюсь настроить postfix dovecot на CentOS 7.

Во-первых, порт 25 открыт, но он не принимает никаких внешних подключений.

Внутреннее соединение на порту 25 работает. Я сделал:

[root@myhost ~]# telnet localhost smtp
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 xxxx.com ESMTP Postfix (CentOS)
helo xxxx
250 xxxx.com
mail from:<[email protected]>
250 2.1.0 Ok
rcpt to:<[email protected]>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from:[email protected]
to:[email protected]
subject:Testing email
test test
.
250 2.0.0 Ok: queued as CBE5F6039
quit
221 2.0.0 Bye
Connection closed by foreign host.

Затем я проверил свой сервер Dovecot по адресу /var/mail/vhosts/xxxx.com/user1:

./new
./new/1693231789.M572537P2155.xxxx,S=495,W=510

Итак, для типичного SMTP (порт 25) моя конфигурация полностью верна. Но проблема в том, что когда я пытаюсь отправить или подключиться через telnet, он ничего не отвечает. Журнал регистрации пуст. Поэтому я попробовал, tcpdump -i any port smtpи он мне говорит, что порт 25 вообще не открывается.

Так что я думаю, что это просто какая-то типичная ошибка Linux, что-то блокирует прослушивание порта 25. Пожалуйста, скажите мне, если кто-нибудь знает, в чем дело.

Во-вторых, порт 465 не работает.

похоже, что postfix либо не слушает его из-за какой-то неправильной настройки, либо что-то в моем Linux заблокировало порт 465. (Или, может быть, SSL неверен)

Я попробовал tcpdump -i any port smtpsи сделал это telnet mail.xxxx.com smtpsна своем компьютере.

Сервер показывает мне, что порт 465 получил пакет. Однако postfix ничего не отвечает.

Итак, я посмотрел на maillog на /var/log/maillog, и он показывает, что postfix вообще не распознал и не ответил на мое telnet-соединение. Вот журнал:

Aug 28 13:42:37 xxxx postfix/postfix-script[1692]: starting the Postfix mail system
Aug 28 13:42:37 xxxx postfix/master[1694]: daemon started -- version 2.10.1, configuration /etc/postfix

Просто ничего. Так что, я думаю, есть какие-то настройки или брандмауэры на Linux, которые блокируют службы от 'реального' прослушивания порта smtp. Кто-нибудь знает это?

Затем я попытался подключиться по telnet с локального хоста на порт 465, но, похоже, даже внутреннее соединение на порту 465 тоже не работает.

На моем сервере я сделал:

[root@myhost ~]# telnet localhost smtps
Trying ::1...
Connected to localhost.
Escape character is '^]'.
helo xxxx
Connection closed by foreign host.

Он просто закрылся после 'helo'. Затем я снова зашел /var/log/maillog, и он выглядит следующим образом:

Aug 28 13:45:57 xxxx postfix/smtps/smtpd[1974]: connect from unknown[::1]
Aug 28 13:46:01 xxxx postfix/smtps/smtpd[1974]: SSL_accept error from unknown[::1]: -1
Aug 28 13:46:01 xxxx postfix/smtps/smtpd[1974]: warning: TLS library problem: 1974:error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:640:
Aug 28 13:46:01 xxxx postfix/smtps/smtpd[1974]: lost connection after CONNECT from unknown[::1]
Aug 28 13:46:01 xxxx postfix/smtps/smtpd[1974]: disconnect from unknown[::1]

Вот мои файлы конфигурации.

sudo postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost, localhost.$mydomain
mydomain = xxxx.com
myhostname = xxxx.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
recipient_delimiter = +
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/xxxx.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/xxxx.com/privkey.pem
smtpd_tls_security_level = may
smtpd_use_tls = yes
unknown_local_recipient_reject_code = 550
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

часть/etc/postfix/main.cf

mail_owner = postfix
myhostname = xxxx.com
mydomain = xxxx.com

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/xxxx,com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/xxxx.com/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous

inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all

mydestination = localhost, localhost.$mydomain

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
recipient_delimiter = +
virtual_transport = lmtp:unix:private/dovecot-lmtp

Часть/etc/postfix/master.cf

smtp      inet  n       -       n       -       1       postscreen
#smtpd     pass  -       -       n       -       -       smtpd
#dnsblog   unix  -       -       n       -       0       dnsblog
#tlsproxy  unix  -       -       n       -       0       tlsproxy
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_reject_unlisted_recipient=no
  #-o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
465     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  #-o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

решение1

Благодаря комментариям @HBruijn выше, я решил эту проблему. Проблема в том, что я настроил два inet_interfaces.

Одна ценная вещь, похоже, в текущем файле конфигурации postfix, это inet_interfaces = localhostзначение по умолчанию, и раскомментировано как defualt. Однако, inet_interfaces = allзакомментировано. Поэтому вам нужно закомментировать, inet_interfaces = localhostкогда вы раскомментируете inet_interfaces = all.

Файл: /etc/postfix/master.cf.

Связанный контент