web-dev-qa-db-ja.com

接尾辞、ホスト名、/ etc / aliases

SF/SOで何時間もDigをして、たくさんグーグルで検索した後でも、/ etc/aliasesがpostfixでどのように使用されているのか理解できません。

  1. Amazon Linux EC2サーバー(Centos6の一種)を使用しています
  2. サーバーのホスト名がsrv.example.comに設定されています
  3. null-client config を使用してpostfix 2.6.6をセットアップしました(私のWebサイトにメールを送信し、個人のメールにレポートを送信する場合のみ)
  4. /etc/aliasesを含むルールでroot: [email protected]を設定しました
  5. /etc/aliasesの変更を考慮してnewaliasesを実行します
  6. 接尾辞を再起動しましたSudo service postfix restart
  7. echo "something" | mailx -s D"subject" rootは、[email protected]ではなく[email protected]にメールを送信します

私はこれを/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%[email protected]>
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=<[email protected]>, size=820, nrcpt=1 (queue active)
Mar 13 17:21:23 srv sendmail[14461]: t2DHLNlC014461: to=root, [email protected] (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=<[email protected]>, 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

私の唯一の接尾辞構成の変更は( null-client config ):

  • 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
2
kheraud

「nullクライアント」が nullクライアント であることを理解した後、私はもう少し理解するために 後置仮想ドメインの方法 を掘り下げます。

一言で言えば

  1. Nullクライアントは、「送信専用」メールサーバー(自分のWebサイトに必要なサーバー)に最適です。
  2. 「nullクライアント」を構成するには、サーバーのホスト名に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...に書き換えられるため[email protected]/[email protected].。
  5. 次に、[email protected][email protected]に書き換えるための接尾辞が必要です
  6. @srv.example.com [email protected]/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 [email protected]の代わりに、(.+)@(.+).example.com [email protected]を使用して[email protected]宛てのメールを受信しました(後でsrv2、srv3、srvxを使用します...)

私はあまりにも早く助けを求めました、この答えが同じ問題で立ち往生している他の人を助けることを願っています。

5
kheraud