こんにちは、今回はAzure上のCentOSサーバから送信したメールを迷惑メールにさせない方法をご紹介します。
【Azureでメールサーバ #1】 送信メールを迷惑メールにさせない方法!! ← ここ
【Azureでメールサーバ #2】 Mailmanを利用し、メーリングリスト送信を実現する方法!!
【Azureでメールサーバ #3】 Azure DNSを利用し、メールサーバを外部公開する方法!!
【Azureでメールサーバ #4】 メール送信者の「sendgrid.me 経由」を非表示にする方法!!
私も当初は普通にPostfixを構築してメール送信すればいいのでは?
と考えていました・・・がメール送信に関する情報を集めていたら、日本マイクロソフトの公式ブログより、以下の記事を見つけました。
https://blogs.technet.microsoft.com/jpaztech/2016/06/09/smtp-on-azurevm/
確かにAzureでサーバをデプロイした際、動的にパブリックIPが発行されますが、そのIPが以前どのような利用をされていたのかはわかりません。
もしかすると、悪意のある迷惑メール業者がそのIPを利用していた場合もあるわけです。
この観点はメール送信に関わらず、Azure上でサービスを開始する際に十分考慮する必要があると思います。
また最近、メールのセキュリティに対して非常に関心が高まっていると思われます。
各社セキュリティソフトウェアによるスパム、フィッシングメール対策やフィルタリング機能の強化。
Google Gmailが先日導入したSSL/TLS化されていないメールや、送信ドメイン認証(SPF、DKIM)されていないアドレスからのメールを警告表示する機能など日々セキュリティを意識させられます。
よって、今回はAzureのアドオンとして組み込まれているメール配信サービス「SendGrid」を利用して、Linux標準のMTA「Postfix」からメール送信する方法をご紹介します。
SendGridの導入
Azureポータルから [新規] > [アドオン] > [SendGrid Email Delivery] > [作成] をクリックします。
新規登録画面にて以下を入力します。
● Name : 任意の文字列を入力します。英数字のみ。
● Password : 任意の文字列を入力します。英数字のみ。
● Confirm Password : Passwordと同じ文字列を入力します。
● サブスクリプション : 利用するサブスクリプションを選択します。
● Resource group : リソースグループを選択します。
● pricing tier : プランを指定します。今回は無料版「F1 Free」を選択します。
● Contact Information : 氏名やメールアドレスを入力します。
● 法律条項 : 内容を確認し、「購入」をクリックします。
上記入力後、「作成」をクリックすることで SendGrid が有効になります。
Postfix構築
Azure上の仮想サーバに Postfix を構築します。
以降はroot権限のあるユーザでの操作を想定しています。
仮想マシン構成
【インスタンスサイズ】
A2 Basic (Core:2/RAM:3.5GB)
【OS】
CentOS release 7.2 x86_64
インストール
必要なパッケージをインストールします。
# yum -y install postfix cyrus-sasl-plain
設定追加
Postfixの送信に関する最低限の設定と送信メールを SendGrid に転送するための設定を追加します。
# cd /etc/postfix/ # cp -p main.cf main.cf.org # vi main.cf # diff main.cf.org main.cf < inet_protocols = all > inet_protocols = ipv4 > myhostname = siostest01 :仮想サーバのホスト名 > mydomain = siostest.com :利用するドメイン名 > myorigin = $mydomain > smtp_sasl_auth_enable = yes > smtp_sasl_password_maps = static:[Username]:[Password] ※1 > smtp_sasl_security_options = noanonymous > smtp_tls_security_level = encrypt > header_size_limit = 4096000 > relayhost = [smtp.sendgrid.net]:587 # systemctl restart postfix
※1
[Username]及び[Password]はAzureポータルから以下を参照し、入力してください。
[SendGrid Account] > [作成名] > [Settings] > [Configurations]
メール送信テスト
ローカルで以下コマンドを実行し、テストメールを送信します。
# echo "test mail" | mail -s "test mail" [送信先アドレス]
送信先アドレスのメールボックスを確認します。
SendGridを利用した場合
SendGridを経由していることがわかります。
SendGridを利用しなかった場合
迷惑メールに振り分けられていることがわかります。(Gmailデフォルト設定)
まとめ
今回は最小限の変更でメールの送信方法をご紹介させて頂きました。
Azureでは簡単かつ迅速にSendGridを導入することが出来るため、時間効率が非常に高いです。
上記を見ていただくとおり、SendGridへ転送した場合としない場合とでユーザへの見え方が異なります。
参考例としてGmaiの画面を掲載させて頂きましたが、他のメールサービスでも同様に表示されることが十分考えられますので、セキュリティを意識して設計する必要があると思います。
サイオステクノロジー株式会社 山田