Scribble at 2023-10-04 13:29:48 Last modified: 2023-10-04 13:49:14

添付画像

Sending an email to the outer mail server.

AWS で EC2 のセットアップをしていて気づいたことだが、これまでディフォールトでは25番ポートが AWS の方で通信が抑制されていて、メールを外部へ送信するためには、(1) AWS に申請してポートを開放してもらう(もちろんセキュリティ・グループのアウトバウンド・ルールも設定する)、(2) SES のような AWS のメール配送サービスを利用する、(3) smtp.gmail.com など外部の SMTP サーバへ Google API のような間接的なメッセージングで送信を代行させる、といったやりかたで対応する必要があった。でも、いつごろからかは知らないが、もう既にディフォールトで外部にメールを送信できるようになっているらしい。実際、このメール配信の申請を出すと、AWS から「既にポートの制限は解除してあって、一定数を超える大量のメール送信だけ申請が必要になる」との返事があった。したがって、AWS からは特にあれこれとセキュリティ対策をしているかどうか質問されるということはなく、返事には逆引きの DNS 設定をした方がいいといったアドバイスしか書かれていない。

というわけで、念のため EC2 のインスタンスに "mail.companyname.co.jp" という(もちろん、これはダミーだ)逆引きの設定をした。当たり前だが、ドメインを管理している、つまりネーム・サーバを管理している方で EC2 の Elastic IP に解決する A レコードを設定してから、AWS の EC2 で逆引きを設定しなくてはいけない。どちらか一方だけ設定しても無意味だ。

そうして、当社のコーポレート・サイトのサーバでは対外的にはメールを送信しておらず、今回はあくまでも社内に(当社の代表が発行しているメールマガジンを)配信するためにだけメールの送信機能を使う。また、当社は Google Workspace を使っているので、メールの受信も送信も本来は Google のサーバを使うから、EC2 のインスタンスがもつ Elastic IP のアドレスを SPF のレコードに追加して、自社からのメールがスパム扱いされるという愚かなことにならないようにしなくてはいけない。そして、EC2 からのメールは自社のドメインを使って配送されるため、メールを送信するソフトウェア(たいてい同じだと思うが、当社では Postfix を使っている)ではメールを送信した際に特殊な設定にしておく必要がある。なぜなら、送信元のドメインと送信先のドメインが同じだと、つまりはローカル扱いで配送されてしまうからだ。仮に宛先のアカウント部が "kawasan" だったら、ローカル配送だとメール・サーバに "kawasan" という UNIX アカウントがなければいけない。そうしないと、メールを送信したら recipient がないというエラーになってしまう。こういう、ドメインが同じアカウントに内部配送をするのを抑止するには、Postfix だと /etc/postfix/main.cf で、"mydestination" のディレクティヴを設定しないことである。敢えて設定しないことで、同じドメインのユーザを内部ユーザとして扱わなくなるため、外部の MX サーバに向けてメールを配送してくれるようになる。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook