チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【AWS】「EC2」CentOSからメール送信&返信されたらメール転送

基本AWSでもCentOSなのでPostfixを使うよ。

考え方CentOSなので同じ。

 

AWS EC2の設定

(当然アマゾンじゃないならCentosiptables

インバウンドでsmtp 25

アウトバウンドで0.0.0.0/0 全てOK

 

 

※EC2の場合はメール送信制限があるようなので解除申請が必要。

Amazon EC2 ~メールを送信するには~ | ec2 メール 送信 制限解除 | ナレコムAWSレシピ

・UseCaseDescription : Entry confirmation email of campaign site. とか

・ElasticIPAddress1  : IPアドレス52.xxxxxとか

・ElasticIPAddress2  : IPアドレス52.xxxxxとか

・ReverseDNSRecord1: 逆引きIP Aレコード登録済みのEC2の1台目サーバドメイン(web1.xxxxxx.jpとか)

・ReverseDNSRecord2: 逆引きIP Aレコード登録済みのEC2の1台目サーバドメイン(web2.xxxxxx.jpとか)

3台以上ある場合はもう一度。てか何度やってもいいし翌日とかにはなるからどんどんやっていい。

 

 

postfix設定

■設定ファイル
vi /etc/postfix/main.cf

myhostname = example.jp
mydomain = example.jp
myorigin = $mydomain
append_at_myorigin = yes
append_dot_mydomain = yes
inet_interfaces = all (外からのメールを受信するためall)
inet_protocols = ipv4
mydestination = $myhostname, localhost(ホスト名解決出来ないログでたので追加)
mynetworks = 127.0.0.1
SMTPサーバーとして localhost または 127.0.0.1 を指定するだけで、
インターネット上の任意のアドレス宛にメールを送信できます。
認証は不要です。)


■main.cfの文法チェック(何も出なければOK)
postfix check

 

■再起動
systemctl restart postfix


Postfix自動起動設定※CentOS7の場合
systemctl enable postfix

 

ドメイン設定

SPFレコード
今回はAWS冗長化の為2台のEC2のIPアドレスを含めた。

※ヤフーだけ設定しないとちゃんとメールこなかったのでSPFレコード設定したらいけた。

TXT "v=spf1 +ip4:xxxxxxx(web1) +ip4:xxxxxxx(web2) ~all"

 

SPFチェックツール)

https://dmarcian.com/spf-survey/

 

 

■MXレコード
10 web1.hoge.com
20 web1.hoge.com

 

■Aレコード
web1.hoge.com valueにIPアドレス
web2.hoge.com valueにIPアドレス

 

ユーザ追加

info@から送りたいので useradd info だけ。

  

メール転送設定

今回は送信専用というテイでやるんだけど、

一応返信された時はこっちでどこかに転送してみたい。その時の設定。

 

■転送設定
vi /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport

 

■transportテーブル作成(ルール付け)
vi /etc/postfix/transport
root@example.jp local:
* :

※メモ
1行目はroot@example.jp 宛のメールはローカルに配送する
2行目は、それ以外のメールはすべて外部に送信するという意味

 

■ハッシュ形式のマッピングテーブルファイルを生成
/usr/sbin/postmap /etc/postfix/transport

(確認)
ls -l /etc/postfix/transport*

-rw-r--r-- 1 root root 12538 6月 17 18:42 2016 /etc/postfix/transport
-rw-r--r-- 1 root root 12288 6月 17 18:42 2016 /etc/postfix/transport.db

 

エイリアス設定(root)
最後に、メールエイリアステーブル/etc/aliasesに、root宛メールの転送先アドレスを記述します。
複数のアドレスに転送する場合は、カンマ区切りで指定します。
vi /etc/aliases
root: <転送先アドレス1>,<転送先アドレス2>

 

エイリアスハッシュの更新
newaliases

 

(確認)
ls -l /etc/aliases*
-rw-r--r--. 1 root root 1548 6月 17 18:45 2016 /etc/aliases
-rw-r--r-- 1 root root 12288 6月 17 18:45 2016 /etc/aliases.db


動作確認 送信テスト

■コマンド

echo "テストの件名です" |\

mail -s "これはテストメールの本文です。" abc@hogegeho.com

※自分自身の場合ドメインは不要(info@example.comならinfoのみ)
echo "テストの件名です" |\

mail -s "これはテストメールの本文です。" info

 

■メールログ確認(送信 sentになってるかなど。)
/var/log/maillog

 


参考

SPFレコード以外はひとまずここですんなりいけた。
というかほとんどここが役に立った
https://inaba-serverdesign.jp/blog/20160620/postfix_send_mail.html

 

■メールキューの操作
postcat -q [キューID]


deferredメールキューを個別に削除
postsuper -d [キューID]

ーーーーーーーーーーーーーーーーーー
※キューIDとは
postfix/qmgr[15096]: 5E15E10E3F10: from=<・・・・・
            ↑この部分
ーーーーーーーーーーーーーーーーーー

すべて削除
postsuper -d ALL deferred


滞留中のキューを全て表示
postqueue -p