У меня есть сервер, на котором я хочу настроить почтовый сервер, чтобы я мог получать и отправлять электронную почту из моего домена. У меня сейчас проблема, когда я не могу получать почту. Отправка писем работает отлично.
Я ухожу от этого скрипта, который показывает, как настроить почтовый сервер с помощью Postfix, Dovecot и Postgresql в качестве бэкэнда (https://gist.github.com/solusipse/7ed8e1da104baaee3f05).
/etc/postfix/main.cf:
relay_domains =
virtual_alias_maps = proxy:pgsql:/etc/postfix/virtual_alias_maps.cf
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/virtual_mailbox_domains.cf
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/virtual_mailbox_maps.cf
virtual_mailbox_base = /home/vmail
virtual_mailbox_limit = 512000000
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
local_transport = virtual
local_recipient_maps =
transport_maps = hash:/etc/postfix/transport
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options =
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/private/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes
smtpd_tls_loglevel = 1
html_directory = /usr/share/doc/postfix/html
queue_directory = /var/spool/postfix
mydestination = localhost
/etc/dovecot/dovecot.conf:
protocols = imap
auth_mechanisms = plain
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
user = root
}
mail_home = /home/vmail/%d/%u
mail_location = maildir:~
ssl_cert = </etc/ssl/private/server.crt
ssl_key = </etc/ssl/private/server.key
/var/logs/mail.log:
Apr 17 19:46:18 v22015072919626549 postfix/smtpd[8837]: connect from ***
Apr 17 19:46:18 v22015072919626549 postfix/smtpd[8837]: 62D6A3E0DC9: client=***
Apr 17 19:46:18 v22015072919626549 postfix/cleanup[8843]: 62D6A3E0DC9: message-id=***
Apr 17 19:46:18 v22015072919626549 postfix/smtpd[8837]: disconnect from ***
Apr 17 19:46:18 v22015072919626549 postfix/qmgr[9001]: 62D6A3E0DC9: from=<***>, size=1160, nrcpt=1 (queue active)
Apr 17 19:46:18 v22015072919626549 postfix/virtual[8844]: 62D6A3E0DC9: to=<***>, relay=virtual, delay=0.05, delays=0.01/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
Apr 17 19:46:18 v22015072919626549 postfix/qmgr[9001]: 62D6A3E0DC9: removed
17 апреля, 19:46:18 v22015072919626549 postfix / virtual [8844]: 62D6A3E0DC9: to = <***>, relay = virtual, delay = 0.05, delay = 0.01 / 0.01 / 0 / 0.02, dsn = 2.0.0, status = отправлено (доставлен на maildir)
Итак, Postfix доставляет почту где-то, но мы еще не знаем где.
Я не могу получать почту. Отправка писем работает отлично.
Так вы уверены, что Postfix доставляет почту куда смотрит Dovecot?
Электронная почта делает храниться где-нибудь; об этом прямо сказано в отрывке из журнала. Согласно странице руководства на веб-сайте Postfix, виртуальный (8) создает путь к почтовому ящику как $virtual_mailbox_base/$virtual_mailbox_maps(recipient)
"где получатель - это полный адрес получателя. ". virtual_mailbox_base исходит из postfix.cf и в вашей конфигурации установлено значение /home/vmail
, и ваш virtual_mailbox_maps
настройка также выглядит достаточно корректной (и если бы проблема была именно в этом, вы, вероятно, увидели бы, как Postfix жалуется на это).
Это отражено в конфигурации Dovecot. mail_home = /home/vmail/%d/%u
. Но в Dovecot вы также установка mail_location = maildir:~
.
На основе VirtualUsers / Главная и Почта оба на Dovecot Wiki, похоже, это означает, что Dovecot ищет "qmail-style" (также известный как Maildir) cur
, new
и tmp
прямо под / home / vmail / something / something. Это где твой Карта виртуального почтового ящика Postfix настроен для доставки писем получателям?
Вы должны дважды проверить синхронизацию двух конфигураций. Я предполагаю, что нет, и это заставляет две части программного обеспечения, которые на самом деле почти не имеют ничего общего друг с другом, работать с разными местоположениями maildir. Это объясняет, почему оба утверждают, что все в порядке, но видят разные взгляды на реальность.
Возможно, что при включении dont_remove может помочь вам диагностировать это, заставляя Postfix оставлять файлы спула почты на диске после завершения окончательной доставки. (Файлы спула почты обычно удаляются после успешной доставки.)
Вы пробовали подключаться по telnet напрямую к вашему серверу через порт 25 из другого компьютера? Одна из самых распространенных ошибок - иметь iptables
блокировать входящие tcp/25
. Если это будет отклонено, вам просто нужно разрешить входящие tcp/25
через iptables
.