メール

Postfixの『Recipient address rejected: User unknown in local recipient table』で15分ほどハマった話

Tヨシダです。
9月は夏休みがあるので、楽しみです。
またもや広島方面に出かけて、お好み焼き食べてくる予定です。
あんしんクラウドメールフィルターの動作検証で、そこにメールを投げつけるためのメールサーバが必要になり、AWSのAmazonLinux2でpostfix+dovecot環境を作った際に、Postfixのエラーで15分ほどハマった話です。
ちなみにT3が出た所なので、T3でAmzonLinux2で建てました。
ちょっと安くなりましたね。

AmazonLinux2について

  • タイムゾーンと、ロケールは日本のものに変えないといけない。
  • ファイアウォールは無効になっている模様。
  • 最低構成の模様(パッケージグループがAWS Toolsと、Development Toolsのみ)。
  • 使用感はCentOS7と変わらない。
    ということで、今後はCentOS7ではなく、サーバが必要な時は、こっちを重点的に使おうかなと思った次第。

    環境

  • AmazonLinux2でt3.micro
  • まず『sudo yum update -y』でアップデート
  • タイムゾーンは東京、ロケールはja_JP.UTF-8
  • Postfixは、プリインストールを利用(2.10.1)。
  • Dovecotは『yum install dovecot』で(2.2.10)。
  • バーチャルホスト設定でSMTP+IMAP環境を作った。

    今回の問題

    外部からメールを受信が出来ない。
    その時に出ていたエラーログが以下。
    Recipient address rejected: User unknown in local recipient table

    問題が発生した時のメールログ

  • $送信元ホスト$.jp・・・送信元ホストのFQDN
  • XXX.XXX.XXX.XXX・・・送信元IPアドレス
  • $送信先ホスト$.jp・・・送信先ホストのFQDN
  • user@$送信元ドメイン$.jp・・・メールの送信元アドレス
  • user@$送信先ドメイン$.jp・・・メールの宛先アドレス
    全体としては、以下のログ

    Aug 20 12:00:00 localhost postfix/smtpd[2028]: connect from $送信元ホスト$.jp[XXX.XXX.XXX.XXX]
    Aug 20 12:00:00 localhost postfix/trivial-rewrite[2009]: warning: do not list domain $送信先ホスト$.jp in BOTH mydestination and virtual_mailbox_domains
    Aug 20 12:00:00 localhost postfix/smtpd[2028]: NOQUEUE: reject: RCPT from $送信元ホスト$.jp[XXX.XXX.XXX.XXX]: 550 5.1.1 : Recipient address rejected: User unknown in local recipient table; from= to= proto=ESMTP helo=
    Aug 20 12:00:00 localhost postfix/smtpd[2028]: disconnect from $送信元ホスト$.jp[XXX.XXX.XXX.XXX]
    

    はい、もう既に答えが出ていますね。
    エラーが出たときはログをよく読みましょうという話です。

    問題が発生した原因

    main.cfの『mydestination』と、『virtual_mailbox_domains』の両方にドメインを書いたらこうなります。

    もうちょっと詳しく

    main.cfに以下の記載。

    
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, $送信先ホスト$.jp, $送信先ホスト2$.jp, $送信先ホスト3$.jp ・・・・・
    (省略)
    virtual_mailbox_domains = /etc/postfix/virtualdomain
    

    上記で定義した『virtual_mailbox_domains』のパスに受信したいドメインを羅列します。

    $送信先ホスト$.jp
    $送信先ホスト2$.jp
    $送信先ホスト3$.jp
    

    こういう設定をした場合、エラーとしては『User unknown』のエラーが出ます。
    もうちょっと気の利いたエラーメッセージだったらすぐ気づいたのになと思いました。

    修正後の設定は以下の通り。

    main.cfの中身
    (※)デフォルトから変更した所だけ抜粋

    myhostname = $送信先ホスト$.jp
    mydomain = $myhostname
    myorigin = $mydomain
    inet_interfaces = all
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    home_mailbox = Maildir/
    virtual_mailbox_domains = /etc/postfix/virtualdomain
    virtual_mailbox_base = /var/spool/virtualdomain
    virtual_mailbox_maps = hash:/etc/postfix/virtualdomainmailbox
    virtual_uid_maps = static:10000
    virtual_gid_maps = static:10000
    smtpd_sasl_type = dovecot
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_path = private/auth
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    

    virtualmailbox・・・の箇所はそれぞれファイルを自前で作ってください。
    postmapコマンドでハッシュ化を忘れずに!
    dovecotの設定は省略します。
    (※)MySQLとか使っていない、簡素な環境なので。
    簡単ですが、以上です。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA