Я пытаюсь настроить почтовый сервис на своем сервере с этот и этот статьи.
После завершения настройки у меня появились рабочие учетные записи пользователей - можно успешно войти в каждую учетную запись с помощью Thunderbird, управлять папками и т. Д. Я могу отправлять электронную почту из одной учетной записи в другую без ошибок (по крайней мере, на стороне клиента), но они не могут быть доставлены . В mail.log
у меня есть:
Aug 31 13:03:46 serwer postfix/virtual[3516]: 4DCB1E132A: to=<admin@example.com>, relay=virtual, delay=2117, delays=2117/0.01/0/0.01, dsn=4.2.0, status=deferred (delivery failed to mailbox /home/vmail/%d/%n/1: unable to create lock file /home/vmail/%d/%n/1.lock: No such file or directory)
Конечно, домен другой, просто заменил его сейчас, чтобы скрыть настоящий. Когда я искал в Интернете решения, я заметил, что в других подобных записях журнала путь к maildir полностью разрешен, например:
/home/vmail/example.com/admin/1.lock
В моих журналах все еще с %d
и %n
- это проблема?
Postfix conf:
smtpd_tls_cert_file=/etc/postfix/ssl/smtpd.cert
smtpd_tls_key_file=/etc/postfix/ssl/smtpd.key
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
virtual_mailbox_base=/home/vmail/%d/%n
virtual_mailbox_domains=mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps=mysql:/etc/postfix/mysql-maps.cf
virtual_alias_maps=mysql:/etc/postfix/mysql-alias.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
local_recipient_maps = $virtual_mailbox_maps
Вы не используете virtual_mailbox_base
параметр как ты должен.
Префикс, который агент доставки virtual (8) добавляет ко всем путям, полученным при поиске в таблице $ virtual_mailbox_maps. Это мера безопасности, чтобы гарантировать, что неконтролируемая карта не засоряет файловую систему почтовыми ящиками.
Это только мера безопасности и не предназначена для указания, куда следует доставить электронное письмо. Это работа virtual_mailbox_maps
.
Вместо этого вы должны установить его на virtual_mailbox_base = /home/vmail
и получите свой запрос MySQL от virtual_mailbox_maps
возврат относительного пути к каталогу почтовых ящиков пользователей, например «domain.com/username», который затем станет «/home/vmail/domain.com/username» после добавления virtual_mailbox_base
.