最近は、サーバも Amazon、ネットショップ(ウクレレ関係を販売)も Amazon、Alexa の招待も申し込んじゃったので、話し相手も Amazon、になりそうです。もちろん買い物もAmazon ・・・・すっかりAmazon中毒。
これ、かなりやばいなって思いつつも、まあ仕方ないかな・・・とも思ってます。
早めに Aisible 覚えて、Amazonでやっている事を全て Google や アジールでも再現できるようにならなきゃダメかな・・・なんて思う今日この頃です。
今回は AWS の EC2 に Postfix をインストールしてみます。Nagios を入れて監視をするように出来たのですが、メールを送ることができないのでメールが送れるように Postfix を入れる事にします。
AWS EC2 に Postfix をインストール
加えて DNS にて SPF 認証が行えて、各 SMTP が中継をしてくれるように設定を行います。
参考アドレスはこちら「https://www.server-world.info/query?os=Ubuntu_16.04&p=mail&f=1」毎度感謝です。ありがとうございます。
Postfix をインストール
$ sudo apt-get -y install postfix sasl2-bin
設定画面が出たら、No configuration を選ぶ
わらわらと終了
設定ファイルをコピー
$ sudo cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf $ sudo vi /etc/postfix/main.cf
参考アドレスに習って設定
後に spf 認証とかもあるので、メールを使っていないドメイン「sologuitar.jp」を割り当てることにします。
#ホスト名 #myhostname = host.domain.tld #myhostname = virtual.domain.tld #を myhostname = mx.sologuitar.jp #ドメイン名 #mydomain = domain.tld #を mydomain = sologuitar.jp #ローカルホスト #inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #を inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost sendmail_path = #を sendmail_path = /usr/sbin/postfix newaliases_path = #を newaliases_path = /usr/bin/newaliases mailq_path = #を mailq_path = /usr/bin/mailq setgid_group = #を setgid_group = postdrop html_directory = #をコメント #html_directory = manpage_directory = #をコメント #manpage_directory = sample_directory = #をコメント #sample_directory = readme_directory = #をコメント #readme_directory =
上記を編集し、postfix をリスタート
$ sudo newaliases $ sudo systemctl restart postfix
newaliases は、メールエイリアスのデーターベスを再構築するものだそうだ。やらなくても良い時もあるかと思うけど、何か設定を変えた時にやっておけば良いかな。
mail コマンドをインストールする
$ sudo apt-get install mailutils
メールが遅れるか mail コマンドでテストしてみる。
$ sudo mail ****@gmail.com Cc: Subject: test testtest
改行後 control + D で送信
$ sudo less /var/log/mail.log
※ログの見方は
https://support.fsv.jp/manual/analysis/log/check/mail.html
この辺りを参考に
SPF 認証がされていないのでブロックされる。
SPF 認証 はhttps://qiita.com/OMOIKANESAN/items/d7a794a42b9baa46fd1f こちらを参照してください。
SPF 認証をするためには IP アドレスが必要。AWS の エラスティック IP アドレスを取得してサーバに割り当てる。
Elastic IP を関連づける
ホスト名でも良さそうなのだけど、ここでは固定IPアドレスを取得して関連づけて見る。 AWS では、Elastic IP って名前で IP アドレスを貸してくれる。
インスタンスを選択したまま「アクション」「ネットワーキング」「IPアドレスの管理」に入る。
現状パブリック IP がわり当たっていますが、これはインスタンスの停止→再起動や、インスタンス内部のコマンドなどで再起動をすると変更になってしまうらしい・・・
なので、固定された IP アドレス(有料)を関連づける必要がある。
「Elastic IP を割り当てます」をクリック。
新しいアドレスの割り当てにて「割り当て」をクリック。
IPアドレスが割り当てられた。「54.248.42.28」
左メニュー「Elastic IP」に入り該当 IP アドレスを選択した状態で「アクション」「アドレスの関連付け」に入る。
リソースタイプ:インスタンス
インスタンス:該当するインスタンス
プライベート IP:そのインスタンスのプライベートIPアドレス
「関連付け」をクリック
関連付けが終わります。
プライベート IP にインスタンスが関連づけられました。
インスタンスを見ても、関連づけられたのがわかります。
EC2 のインスタンスを 停止→再開しても、この関連付けは外れません。
DNS に SPF認証 の登録
今回割り当てた IP アドレスは「54.248.42.28」。
次にドメインを管理している DNS のゾーンファイルを書き換える。
まずは A レコードにてホスト名と IPアドレスの紐付けを行う。
mx.sologuitar.jp A 54.248.42.28
次に txt レコードでこのドメインではこの IP アドレスのサーバからメールを送信しますよ。って事を書いてあげる。
ネームサーバで
"v=spf1 mx include:spf01.*****.*** ~all" ↓ "v=spf1 mx include:spf01.*****.*** +ip4:54.248.42.28 ~all"
とする。
「spf01.*****.***」は既に書かれていた記述。ない場合は、
"v=spf1 +ip4:54.248.42.28 ~all"
これだけで良いかと思うけど、試していないのでやってみて下さい。はい。
DNS を書き換えたら mail コマンドでテスト
$ sudo mail ****@gmail.com Cc: Subject: test testtest
control + D で送信
$ sudo less /var/log/mail.log
で確認
これでも送れない。
よく見たら迷惑フォルダに入っていた・・・ひとまずメールの配信は可能になった。めでたしめでたし。
コメント