Я могу отправлять почту на почтовые ящики, которые я настроил с помощью postfixadmin. Это работает правильно, и я могу отправлять и доставлять им почту. Но теперь мне нужны псевдонимы для правильной работы. Я использовал руководство для настройки перечисленных Вот. Тем не менее, каким-то образом postfix продолжает попытки отправить почту в почтовый ящик для псевдонима.
Основной адрес электронной почты: name@domain.nl
Псевдоним электронной почты: alias@domain.nl
Записи в базе данных установлены правильно, и когда я запускаю эту команду:
postmap -q alias@domain.nl mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
я получаю правильный адрес электронной почты: name@domain.nl
к которому прикреплен почтовый ящик. Что я делаю не так?
Журналы не содержат никакой полезной информации. Когда я отправляю письмо на свой псевдоним, журналы выглядят следующим образом:
Jun 10 10:38:13 localhost postfix/smtpd[3061]: C27DC614DD: client=mail-wm0-f41.google.com[74.125.82.41]
Jun 10 10:38:13 localhost postfix/cleanup[3072]: C27DC614DD: message-id=<CAGUk6whj3Drb-c=5N55TU80UoKR6sC2r4k+3jtxj9pBO5Gp5Pg@mail.gmail.com>
Jun 10 10:38:13 localhost postfix/qmgr[30229]: C27DC614DD: from=<some.personal.email@gmail.com>, size=2011, nrcpt=1 (queue active)
Jun 10 10:38:13 localhost postfix/smtpd[3061]: disconnect from mail-wm0-f41.google.com[74.125.82.41]
Jun 10 10:38:14 localhost postfix/smtp[3074]: C27DC614DD: to=<some.personal.email@gmail.com>, orig_to=<alias@domain.nl>, relay=gmail-smtp-in.l.google.com[74.125.136.27]:25, delay=0.32, delays=0.07/0.01/0.15/0.1, dsn=2.0.0, status=sent (250 2.0.0 OK 1465547906 q2si2091788wme.1 - gsmtp)
Jun 10 10:38:14 localhost postfix/qmgr[30229]: C27DC614DD: removed
Но он не попадает в почтовый ящик name@domain.nl
Мой /etc/postfix/main.cf
:
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/letsencrypt/live/domain.nl/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.nl/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_auth_only = yes
smtpd_tls_mandatory_protocols=!SSLv2
smtpd_tls_ciphers = high
smtpd_tls_loglevel = 1
smtpd_tls_ask_ccert=yes
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
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = mail.domain.nl
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
disable_vrfy_command = yes
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_base = /var/mail
virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
header_checks = regexp:/etc/postfix/header_checks
Мой /etc/dovecot/dovecot-sql.conf.ext
выглядит так:
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=spieard123
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
Мой /etc/dovecot/conf.d/auth-sql.conf.ext
выглядит так:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/%d/%n
}
Я открыл новую комнату, так как комната с NickW заморожена. Вы можете присоединиться здесь.
Настройка Postfixadmin:
Я думаю, проблема в том, что вы выбираете конечную точку из почтового ящика, а не из таблицы виртуальных пользователей, поэтому postfix знает, куда он должен идти, но не dovecot.
Изменить :
SELECT username as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
Кому:
password_query = SELECT email as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM virtual_users WHERE email=(SELECT destination FROM virtual_aliases WHERE source = '%u');
Очевидно, что имена БД и таблиц могут отличаться. AND active = '1'
в этом нет необходимости, так как это не таблица почтового ящика ..
Не обращайте внимания на мой первый ответ (ниже) - он работает, но, вероятно, не является хорошим решением.
Есть ли шанс, что у вас есть receive_override_options = no_address_mappings в вашем Postfix main.cf или master.cf.
У меня это было как -o receive_override_options = no_address_mappings как для SMTP, так и для порта отправки. (У меня он еще для DSpam).
Если вы удалите его, Postfix сообщает Dovecot, какому пользователю он должен доставить почту:
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
/etc/dovecot/dovecot-sql.conf:
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox, domain WHERE username = '%u' AND mailbox.active = '1' AND domain.domain = '%d' AND domain.active = '1'
Таким образом, Dovecot может знать, какие учетные записи действительно существуют (и имеют почтовые каталоги), а Postfix сообщает Dovecot, какой учетной записи сопоставляется адрес.
Вы пробовали allow_all_users = yes в /etc/dovecot/conf.d/auth-sql.conf.ext
userdb {
driver = static
args = uid=vmail gid=vmail allow_all_users=yes home=/var/mail/%d/%n
}
Может потребоваться символическая ссылка на псевдонимов пользователей / доменов
cd /var/mail
ln -s domain.tld alias_domain.tld
or
ln -s domain.tld/user domain2.tld/user_alias
что делает его не таким элегантным, как рабочий SQL-запрос userdb для dovecot ...
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
Лучшее, что у меня есть, это:
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox, domain WHERE local_part = '%u' AND domain.domain = '%d';
(при условии 5000: 5000 = vmail: vmail)
что, по крайней мере, заставляет user_aliases работать (мне не удается заставить псевдонимы пользователей работать с псевдонимами доменов)
Postbox будет правильно отклонять неизвестных виртуальных пользователей из-за множества SQL-запросов, предоставляемых Postfixadmin, но в SQL-запросе userdb, предоставленном для dovecot, отсутствуют таблицы alias и alias_domain, и я недостаточно хорошо разбираюсь в SQL, чтобы исправить это.
Чтобы убедиться, что ваш псевдоним работает правильно, вы можете попробовать проверить свой MySQL прямо в первую очередь.
Из вашего журнала я не вижу попыток доставки на ваш почтовый ящик
Выбрать goto из псевдонима
Для псевдонима вы должны увидеть что-то подобное в своем журнале
29 06:46:59 mail postfix/local[15339]: A8967BF907: to=<yourmailbox@domain.com>, orig_to=<youralias@domain.com>, relay=local, delay=1.1, delays=1/0.02/0/0.11, dsn=2.0.0, status=sent (delivered
Глядя на свой журнал, похоже, что это псевдоним вашего адреса Gmail.
Отредактировано Я прочитал ваш комментарий и смоделировал тот же сценарий. Если вы проследите свой ход, вы должны увидеть в своем журнале следующее.
Jun 29 08:15:31 mail postfix/qmgr[9259]: D803DC04BD: from=<someone@gmail.com>, size=741, nrcpt=2 (queue active)
Jun 29 08:15:31 mail postfix/smtpd[18918]: disconnect from micro.sg[128.199.136.21] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Jun 29 08:15:31 mail dovecot: lda(someone@domain.com): msgid=<ee6c9f45452e0afa0b7028fccc380362@domain.com>: saved mail to INBOX
Jun 29 08:15:31 mail postfix/pipe[18984]: D803DC04BD: to=<name@domain.com>, orig_to=<alias@domain.com>, relay=dovecot, delay=0.06, delays=0.01/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 29 08:15:33 mail postfix/smtp[18941]: D803DC04BD: to=<your-personal@gmail.com>, orig_to=<alias@domain.com>, relay=gmail-smtp-in.l.google.com[74.125.200.27]:25, delay=1.4, delays=0.01/0/0.87/0.49, dsn=2.0.0, status=sent (250 2.0.0 OK 1467202533 f205si352653oib.152 - gsmtp)
Jun 29 08:15:33 mail postfix/qmgr[9259]: D803DC04BD: removed
обратите внимание, было 2 разных вызова и доставки по smtp. Не могли бы вы проверить и убедиться, что ваша доставка в локальный почтовый ящик проверяется администратором постфикса. См. Экран postfixadmin -> Виртуальный список -> Почтовый ящик -> Псевдоним. Вы должны проверить местный почтовый ящик
Если вы установили флажок выше, значит, это другой набор проблем.