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とか使っていない、簡素な環境なので。
簡単ですが、以上です。
プロフィール
クラウドベリージャムという言葉にピンと来た人は、是非クラウドベリージャムを見てください。
日本でクラウドベリージャムといえば、これだよね!と言ってもらえるように頑張ります。
LINK
クラウドベリージャム:プロフィールページ