AWS に acmailer と MMDS で作るメール配信システム

今回は、AWS(EC2) から簡単に使えて、尚且つ到達率の高いメール配信システムを作ってみました。

利用するのはインスタンスとしてEC2、メール配信CGIとして無料で使えるメール配信CGI「acmailer」、メールの接続先として、日本の携帯キャリアへの配信も考慮し、当社の配信サービス MMDS を利用します。

aws でアカウントを・・・と言った説明は省略し
既に CentOS-6.x系で、インスタンスが起動している事を前提ですすめます。

先ずは、acmailer のインストールですが
acmailer のサイト http://www.acmailer.jp/ から
「今すぐダウンロード」をクリックし、正式版か開発版かどちらかを決めて「ダウンロード」して下さい。
その際の、perlパスは、CentOS系でしたら(標準)のままです。

きっと、install.cgi がダウンロードされたと思います。

このファイルは、インストールするEC2のインスタンスにSCPします。

このあたりの説明は
http://www.acmailer.jp/download/install.html
を参考にして頂ければ、良いかと思いますが

まずは、apache をインストールして起動します。
#yum install httpd
#chkconfig –level=3 httpd on
#service httpd start

EC2 Management Console から
Security Group で、Inbound の制限を必要に応じて実施して下さい。

acmailer 専用で構築しようと思いますので
トップディレクトリーからパーミッションを変更します。
#chmod 777 /var/www/html

ここに、install.cgi を配置して
ブラウザーからアクセスします。
http://”Public DNS”/install.cgi

そのままだと、cgi の内容が表示されるだけですので
設定ファイル(/etc/httpd/conf/httpd.conf)を編集して
ドキュメントルートでの、CGI の実行を許可します

ディレクトリー

の下の

331行目あたり
Options Indexes FollowSymLinks

Options Indexes FollowSymLinks ExecCGI

90584a96

796行目
#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi

f241e63b

存したら、httpd を再起動します

service httpd start

ブラウザーで再度アクセスします。

・・・
無事にインストールが終わりますので、install.cgi は削除して
設定に入ります。

まずは、From アドレスの設定です。

b2f40866

NHN Techorus MMDS for クラウドですが
Fromのアドレスに対してパスワードが発行されます。
このアドレスのドメインパートの、AレコードとMXレコード
そして、TXTレコードとして指定される _spf.ko-sokumail.net が登録されていないと
認証されないらしいので、DNSの設定を行う必要がありました。

acmailer は、SMTP-AUTHに対応しているので

http://”Public DNS”/login.cgi?
でログインし
上部の「各種設定」をクリックし
menu の中の「送信サーバー設定」で
「外部サーバー」を選択し
「認証方法」で「SMTP承認」を選択します
「ホスト名」は、”smtp.ko-sokumail.net” 「ポート」は、”25″
「ユーザ名」「パスワード」は、契約時の物を入力して「更新」します。

d8108e09

早速、「メール配信」を・・・と思ってテストをしても全く届きません。

これは、acmailer が TLS に対応していない為でした。

acmailer のライセンスとして
http://www.acmailer.jp/license/
CGIの改変・カスタマイズも○となっていますので
ちょっとだけ、手を加えてみます。

yum -y install perl-Net-SMTPS

以下もインストールされると思います。
(perl-IO-Socket-SSL)
(perl-Socket6)
(perl-IO-Socket-INET6)
(perl-GSSAPI)
(perl-Authen-SASL)

cd /var/www/html/lib

clsMail.pm を編集します
592行目の
my $SMTP = Net::SMTP->new($relay_host,Port=>$relay_port,Debug =>$debug);

require Net::SMTPS;
my $SMTP = Net::SMTPS->new($relay_host,doSSL=>’starttls’,SSL_version=>’TLSv1′,Debug =>$debug);

ca36d41a

これで、どうでしょう。
無事、送れましたでしょうか?

この後、メール送信制限解除申請をフォームからしておけば安心ですね。

https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

オンラインマニュアル
で機能を確認しながら、使ってみましょう。

(当記事は、当社エンジニアブログに掲載されていたものを加筆修正し転載したものです。)

あなたにおすすめの記事