Назад | Перейти на главную страницу

Постфикс: virtual_alias_maps, доставляющий все одному пользователю, несмотря на новый домен

у меня есть postfix установка для обработки почты для пары доменов, для которых вся почта отправляется одному реальному локальному пользователю (cmb), и я хочу добавить новый домен (назовем его example.org) для второго пользователя, но все доставляется cmb. Вот это /etc/postfix/virtual:

chris@boyle.name cmb
@chris.boyle.name cmb
@cmb.is-a-geek.org cmb
@example.org newperson

Вот большая часть /etc/postfix/main.cf, полный файл по запросу. Я не установил luser_relay.

myhostname = nova.chris.boyle.name
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = chris.boyle.name
mydestination = chris.boyle.name, nova.chris.boyle.name, nova, localhost.localdomain, localhost
mynetworks_style = host
mailbox_command = procmail -a "$EXTENSION"
virtual_alias_domains   = cmb.is-a-geek.org example.org
virtual_alias_maps      = hash:/etc/postfix/virtual
smtpd_sender_login_maps = hash:/etc/postfix/virtual

Вот это /etc/aliases:

# See man 5 aliases for format
postmaster: cmb
root: cmb

Обратите внимание, что aliases.db и virtual.db оба являются более поздними, чем их аналоги в виде обычного текста, и postfix был перезапущен безрезультатно. Тестовое письмо на test@example.org делает это в mail.log (Я отредактировал этот отрывок журнала, чтобы домен example.org).

Aug 30 12:48:59 nova postfix/smtpd[32520]: 795B53D558: client=goggins.uwcs.co.uk[89.16.166.19]
Aug 30 12:48:59 nova postfix/cleanup[32530]: 795B53D558: message-id=<20090830114859.GA15341@warwickcompsoc.co.uk>
Aug 30 12:48:59 nova dkim-filter[2074]: 795B53D558 external host goggins.uwcs.co.uk attempted to send as uwcs.co.uk
Aug 30 12:48:59 nova dkim-filter[2074]: 795B53D558 ASP query: missing parameter(s) in policy data
Aug 30 12:48:59 nova spamd[2385]: spamd: connection from localhost [127.0.0.1] at port 38371 
Aug 30 12:49:00 nova spamd[2385]: spamd: using default config for test@example.org: /srv/chris.boyle.name/spamassassin/user_prefs 
Aug 30 12:49:00 nova spamd[2385]: spamd: processing message <20090830114859.GA15341@warwickcompsoc.co.uk> for test@example.org:1000 
Aug 30 12:49:05 nova spamd[2385]: spamd: clean message (-5.2/5.0) for test@example.org:1000 in 5.3 seconds, 1002 bytes. 
Aug 30 12:49:05 nova spamd[2385]: spamd: result: . -5 - AWL,BAYES_00,LOCALPART_IN_SUBJECT,RCVD_IN_DNSWL_MED,SPF_PASS,UNPARSEABLE_RELAY scantime=5.3,size=1002,user=test@example.org,uid=1000,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=38371,mid=<20090830114859.GA15341@warwickcompsoc.co.uk>,bayes=0.000000,autolearn=ham 
Aug 30 12:49:05 nova postfix/qmgr[32518]: 795B53D558: from=<cmb@warwickcompsoc.co.uk>, size=966, nrcpt=1 (queue active)
Aug 30 12:49:05 nova postfix/smtpd[32520]: disconnect from goggins.uwcs.co.uk[89.16.166.19]
Aug 30 12:49:05 nova postfix/local[32533]: 795B53D558: to=<cmb@chris.boyle.name>, orig_to=<test@example.org>, relay=local, delay=6.1, delays=6.1/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Aug 30 12:49:05 nova postfix/qmgr[32518]: 795B53D558: removed

Обратите внимание, что он доставляется cmb в конце: я действительно хотел бы знать, почему.

Робот101 помог мне решить эту проблему. Хитрость в том, что virtual_alias_maps будет эффективно рекурсировать до тех пор, пока адрес не будет изменен, а неквалифицированные локальные части в правой части карты будут квалифицированы с помощью myorigin, так что бывает:

foo@example.org  -> newperson@chris.boyle.name -> cmb@chris.boyle.name

Поэтому я могу обойти это, изменив myorigin к nova.chris.boyle.name (и исправление канонизации моего адреса (используя canonical_maps) использовать @chris.boyle.name в адресах отправителя). Таким образом, отображение будет на foo@nova.chris.boyle.name, который карта больше не изменит, и конечным пунктом назначения по-прежнему является эта машина. В качестве альтернативы я мог бы полностью квалифицировать сопоставления с помощью @nova.chris.boyle.name.