Постфикс, имя хоста и /etc/aliases

После того, как я часами копался в SF/SO и много гуглял, я все еще не могу понять, как /etc/aliases используется postfix.

  1. Я использую сервер Amazon Linux EC2 (вид Centos6)
  2. Имя моего сервера установлено в srv.example.com
  3. Я установил postfix 2.6.6 с конфигурацией нулевого клиента (только для отправки почты на мой сайт и отправки отчетов на мою личную почту)
  4. Я настроил /etc/aliases с правилами в том числе root: mymail@gmail.com
  5. я бегу newaliases принять во внимание изменения в /etc/aliases
  6. Я перезапустил постфикс sudo service postfix restart
  7. echo "something" | mailx -s D"subject" root отправляет почту root@example.com вместо mymail@gmail.com

Я проследил это в /var/log/maillog:

Mar 13 17:21:23 srv postfix/smtpd[14462]: A27B540A87: client=localhost[127.0.0.1]
Mar 13 17:21:23 srv postfix/cleanup[14466]: A27B540A87: message-id=<55031c93.Il7wUJmrkLu/WLNL%srv@example.com>
Mar 13 17:21:23 srv opendkim[2065]: A27B540A87: DKIM-Signature field added (s=prod-key-swf, d=example.com)
Mar 13 17:21:23 srv postfix/qmgr[14458]: A27B540A87: from=<srv@example.com>, size=820, nrcpt=1 (queue active)
Mar 13 17:21:23 srv sendmail[14461]: t2DHLNlC014461: to=root, ctladdr=srv@example.com (serveur srv) (500/500), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30309, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as A27B540A87)
Mar 13 17:21:25 srv postfix/smtp[14467]: A27B540A87: to=<root@srv.example.com>, relay=aspmx.l.google.com[64.233.186.27]:25, delay=2, delays=0.1/0.01/1.4/0.48, dsn=5.1.1, status=bounced (host aspmx.l.google.com[64.233.186.27] said: 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. Learn more at 550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596 f78si2479139qkh.47 - gsmtp (in reply to RCPT TO command))
Mar 13 17:21:26 srv postfix/bounce[14468]: A27B540A87: sender non-delivery notification: 2297E40A86
Mar 13 17:21:26 srv postfix/qmgr[14458]: A27B540A87: removed

Мои единственные модификации конфигурации postfix (конфигурация нулевого клиента):

  • myhostname = srv.example.com
  • myorigin = $mydomain
  • relayhost = $mydomain
  • inet_interfaces = loopback-only
  • mydestination =

Какой шаг мне не хватает, чтобы операторы /etc/aliases были применены как положено?

мой sudo postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = loopback-only
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
milter_default_action = accept
mydestination =
myhostname = srv.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relayhost = $mydomain
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_milters = inet:127.0.0.1:8891
unknown_local_recipient_reject_code = 550

1 ответ

Поняв, что "нулевой клиент" - это нулевой клиент, я копаю немного больше, чтобы понять, как это сделать в виртуальном домене postfix.

В двух словах

  1. Нулевой клиент идеально подходит для почтового сервера "только для отправки" (тот, который мне нужен для моего сайта)
  2. Настройка "нулевого клиента" требует определения myorigin на имя хоста сервера
  3. myorigin also specifies the default domain name that is appended to recipient addresses that have no @domain part (взято из /et/postfix/main.cf).
  4. Postfix не будет использовать мой /etc/aliases направлять мои локальные письма как мои письма root / fail2ban / me... будет переписан в root@srv.example.com / fail2ban@srv.example.com...
  5. Затем мне нужен постфикс, чтобы переписать xxx@srv.example.com в mymail@gmail.com
  6. добавлять @srv.example.com mymail@gmail.com в /etc/postfix/canonical
  7. добавлять canonical_maps = hash:/etc/postfix/canonical в /etc/postfix/main.cf
  8. Бежать postmap /etc/postfix/canonical и перезапустите постфикс (sudo service postfix restart)

Переписывание локальной почты с помощью регулярных выражений

Я пошел немного дальше, чтобы сохранить информацию о первоначальном целевом пользователе. Вы можете использовать регулярное выражение для этого:

  • В /etc/postfix/main.cf, вместо canonical_maps = hash:/etc/postfix/canonicalиспользовать canonical_maps = regexp:/etc/postfix/canonical
  • В /etc/postfix/canonical, вместо @srv.example.com mymail@gmail.com, Я использовал (.+)@(.+).example.com mymail+$1.$2@gmail.com получать почту на mymail+fail2ban.srv@gmail.com (у меня будет srv2, srv3, srvx позже...)

Я попросил о помощи слишком рано, надеюсь, этот ответ поможет другим, кто застрял в той же проблеме.

Другие вопросы по тегам