TL;DL
OCIのMail Deriveryなどで、メールの送信テストをする際、
SwaksというPerlのスクリプトを使えばハッピーだ!ということを知りました。
実際、Linuxサーバの上で実行してみたら、思いの他にデバックで役に立ったので
いろいろなところでお勧めしよう思い。。。
Perlが使えるならWindows上でも動くよね?と、いうところで検証をしてみました。
(もちろん、使えたのでその手順を紹介しますー)
テストした環境
- サーバOS:
Windwos 2019 Standard(Oracle Cloudのコンピュートインスタンス) - Perl環境
Swaksでサポートされてるもの & Portable版(テスト完了後、削除したい)
Perlのインストール
- 今回、Strawberry PerlというPerlを使います
- レジストリを汚さないPortable版が存在するし、
- Swaksの公式サイトで、紹介がされていたので。
Keep in mind that a working Perl will need to be installed (Strawberry Perl and ActiveState Perl both work)
- ダウンロードサイト:https://strawberryperl.com/releases.html
strawberry-perl-5.32.1.1-64bit-portable.zip
→ インストールは、デスクトップとかに解凍するだけ。
アンインストールも、これを丸っと削除するだけ。
Perlを起動(動作確認)
- portableshell.bat 実行
----------------------------------------------
Welcome to Strawberry Perl Portable Edition!
* URL - http://www.strawberryperl.com/
* see README.TXT for more info
----------------------------------------------
Perl executable: C:\Users\opc\Desktop\strawberry-perl-5.32.1.1-64bit-portable\perl\bin\perl.exe
Perl version : 5.32.1 / MSWin32-x64-multi-thread
Swaksスクリプトをゲット
C:\Users\opc\Desktop\strawberry-perl-5.32.1.1-64bit-portable>curl "http://www.jetmore.org/john/code/swaks/files/swaks-20130209.0/swaks" > ./swaks.pl
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 149k 100 149k 0 0 141k 0 0:00:01 0:00:01 --:--:-- 141k
Swaksでメール送信を実行
ワンライナー。長いけど。
perl swaks.pl -4 -tls --pipeline \^
--server smtp.email.ap-tokyo-1.oci.oraclecloud.com --port 587 \^
--auth-user ocid1.user.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@ocid1.tenancy.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.wm.com \^
--auth-password "XXXXXXXXXXXXXXXXXXXX" \^
--from no-reply@sub.hogegegege.net \^
--to 宛先のメアド \^
--header "Subject: =?UTF-8?B?44CQ44OG44K544OI44CR?= from OCI(Email Delivery)!" \^
--body "email message... TEST\nqwerty\n\n."
各オプションで指定する内容は、Linux上で実行するときと一緒です。
同じスクリプトを実行するので、当たり前と言っちゃ当たり前ですがw
ただ、OSシェルの機能差分として、-4(IPv4指定)が必要だったり、
クウォートの違い(シングル or ダブル)とかもあるので、気をつけませう。
- 参考:Linux上でSwaksを実行する場合のコマンドのサンプルはこちら。
【蛇足】Windowsファイアウォール
メールが送信できない場合は、Windowsファイアウォールなどを疑ってみましょう
Windowsファイアウォールの状態確認
PS C:\Windows\system32> netsh advfirewall show allprofiles state
Domain Profile Settings:
----------------------------------------------------------------------
State ON
Private Profile Settings:
----------------------------------------------------------------------
State ON
Public Profile Settings:
----------------------------------------------------------------------
State ON
Ok.
Windowsファイアウォールの無効化
PS C:\Windows\system32> netsh advfirewall set allprofiles state off
さいごに。
Perlのお作法的によろしくない用法を紹介してしまっているかもしれません。
気になる記載があれば、コメントで教えてくださいー