2014年7月27日日曜日

SoftLayer からメール送信

SoftLayer からメール送信してみました。

管理ポータル (https://control.softlayer.com/) にログインし、[Services]-[Email Delivery] メニューをクリックします。右上にある [Order Email Delivery Service] リンクをクリックします。
[Free Package [$0.00 per month]  25,000 Email / Month] を選択し、[Email Address] および [Confirm Email Address] にメール・アドレスを入力し、[Same as Email] にチェックを入れ、[Password] にパスワードを入力し、[Continue] ボタンをクリックします。
[I have read the Master Service Agreement and agree to the tems therein.] にチェックを入れ、[Place Order] ボタンをクリックします。

メール送信用スクリプトを準備します。太字の部分は各自書き直してください。
試していませんが、「$mime->attach(...);」 の直後に 「$mime->attach (Path => 'example.txt', Type => 'text/txt', Encoding => 'base64') or die "Error sendalert !\n";」 といった感じの処理を追加すると、添付ファイルの送信も可能だと思います。


cat << 'EOF' | sudo tee /usr/local/bin/sendalert
#!/usr/bin/perl

use strict;
use MIME::Entity;
use Net::SMTP;
use Encode;

my $username = 'softlayer@example.com';
my $password = 'password';
my $hello = 'example.com';
my $from = 'softlayer@example.com';

my $to = $ARGV[0];
my $subject = encode( "MIME-Header-ISO_2022_JP", $ARGV[1] );
my $text = $ARGV[2];
my $mime = MIME::Entity->build(Type => 'multipart/alternative', Encoding => '-SUGGEST', From => $from, To => $to, Subject => $subject);
$mime->attach(Type => 'text/plain', Encoding =>'-SUGGEST', Data => $text);
my $smtp = Net::SMTP->new('smtp.sendgrid.net', Port=> 587, Timeout => 20, Hello => $hello);
$smtp->auth($username, $password);
$smtp->mail($from);
$smtp->to($to);
$smtp->data($mime->stringify);
$smtp->quit();
EOF
sudo chmod 700 /usr/local/bin/sendalert


この perl スクリプトは、パッケージを追加しないと動かないので追加します。


sudo yum -y install perl-MIME-tools perl-Authen-SASL


以下のようにメール送信します。送信先、件名、本文を指定します。本文は複数行でもよいです。
UTF-8 で件名、本文を指定した場合しかテストしていません。
件名で JIS 第2水準漢字 (JIS X 0208) 外の文字を使うと文字化けします。本文については、私の環境でテストした範囲では文字化けしていません。


sudo /usr/local/bin/sendalert send_to@example.com "[Error] $(uname -n) てすと" "あいう"



無料の範囲だと、毎月25,000通のメールを送信できます。
有料で送信可能通数を増やすこともできます。

監視結果の送信に利用しようかなと考えているのでスクリプト名が sendalert となっています。

メールサーバを構築するのが面倒な場合に便利だと思います。確実にメールが届くようにメールサーバを構築するのは結構面倒です。
外部の SendGrid というサービスが利用されているので、グローバル・アドレスへ通信可能なサーバでしか動きません。

0 件のコメント:

コメントを投稿