Я пытаюсь настроить почтовый сервер на Ubuntu с помощью Postfix, Dovecot и LDAP. Пока я могу отправлять и получать почту с помощью Postfix и могу подключаться к Dovecot через telnet (порт 143) с пользователем LDAP.
В качестве следующего шага я хотел бы настроить Dovecot в качестве моего LDA, как это было предложено в книге Postfix Р. Хильдебрандта и П.Б. Кёттер. Однако до сих пор Postfix пытается использовать локальный демон для доставки почты локальному получателю.
Пока что я настроил следующее (фактический домен заменен на example.com):
Активировать доставку голубятни в /etc/dovecot/conf.d/15-lda.conf:
protocol lda {
postmaster_address = postmaster@example.com
}
service auth {
unix_listener auth-master {
mode = 0600
user = vmail
}
}
Установить голубятню в /etc/postfix/master.cf:
dovecot unix - n n - - pipe
flags=ODRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -e -f ${sender} -d ${recipient}
Настроил виртуальный транспорт в /etc/postfix/main.cf:
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Когда я даю команду echo foo | /usr/sbin/sendmail -f ttester@dtvvolleyball.de ttester@dtvvolleyball.de
Я получаю следующий вывод журнала:
postfix/qmgr[25582]: 2AA0060E36: from=<ttester@example.com>, size=272, nrcpt=1 (queue active)
postfix/local[26102]: 2AA0060E36: to=<ttester@example.com>, relay=local, delay=0.01, delays=0.01/0/0/0, dsn=5.1.1, status=bounced (unknown user: "ttester")
Пользователь ttester
существует в дереве LDAP и может быть найден Dovecot. Например, если я выдам deliver
команда вручную отправлено письмо. Однако только если не укажите домен:
/usr/lib/dovecot/deliver -e -f ttester@example.com -d ttester
Подводя итог проблеме, я подозреваю, что по какой-то причине Postfix не делегирует доставку в Dovecot. Любая помощь высоко ценится.
Заранее спасибо!
Вот что postconf -n
производит:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = $mydomain, $myhostname, localhost, localhost.$mydomain
myhostname = mail.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_data_restrictions = reject_multi_recipient_bounce
smtpd_helo_required = yes
smtpd_recipient_restrictions = reject_non_fqdn_recipient reject_non_fqdn_sender reject_unknown_recipient_domain reject_unknown_sender_domain permit_mynetworks reject_sender_login_mismatch reject_unauth_destination check_recipient_access hash:/etc/postfix/roleaccount_exceptions reject_multi_recipient_bounce reject_non_fqdn_helo_hostname reject_invalid_helo_hostname check_helo_access pcre:/etc/postfix/helo_checks check_sender_mx_access cidr:/etc/postfix/bogus_mx permit
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
Postfix будет использовать классы адресов, чтобы определить, какой класс домена и его транспорт для доставки электронной почты.
На основе вашего postconf
выход, $domain
/example.com
перечислен в mydestination
, поэтому он будет использовать классы локальных адресов и использовать $local_transport
параметр (запустить postconf local_transport
), чтобы доставить электронное письмо.
Поэтому virtual_transport
был проигнорирован постфиксом. Предлагаемое решение - удалить $ mydomain из mydestination и поместить его в virtual_mailbox_domains
.