1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Swaksをメール送信のテストで使う

Last updated at Posted at 2022-06-10

TL;DL

Oracle CloudのEmail Deliveryでメール送信をテストしたくて、
オンラインドキュメントにあったSwaksっていうメール・クライアントを試した。

ドキュメントみて「簡単そう」と思ったんですが、
実際に設定してみると 少々 躓いてしまったw
自嘲のついでに、自分の環境で成功したときのメモを公開してしまうという試み。

Swaksでメール送信

前提

  • Email Deliveryの設定が終わっていること ← これが今回のSTMPサーバ
  • Swaksは、Oracle Linux 7.9 にインストールして使う

Swaksインストール

失敗 orz

  • こちらのドキュメントのとおりにインストールします。
    sudo yum install swaks -y

    No package swaks available.
    Error: Nothing to do

  え?何?これ。どういうこと?
  パッケージが存在しないと? yum一発でインストールできない?

仕切り直し

ということで、Swaksの公式サイトを見ながらインストールします。

コマンド本体

sudo su -
curl "https://jetmore.org/john/code/swaks/files/swaks-20201014.0/swaks" > /usr/local/bin/swaks 
chmod 755 /usr/local/bin/swaks

入れてみてわかったんですが、いわゆるPerlのスクリプトでした。
yumで入ってたら、中身を見る機会はなかったかも

依存モジュール(Perl)

スクリプトだけだと、やりたいことのひとつ(TLS接続)ができない...
Net::SSLeayという、perlモジュールが必要そう。と、いうことで。

sudo su -
yum install perl-Net-SSLeay perl-CPAN -y
cpan install Net::SSLeay

cpanコマンドの実行中に、いろいろ聞かれましたが、全部デフォルト(Enter連打)で。

送信テスト

ワンラーナーです。長いけど。

swaks -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.'
  • --serverは、名前のとおりSMTPサーバのアドレス。
    ここで公開されてる。Email Deliveryを設定したリージョンを選ぶ。今回は東京。

以下の2つは、SMTP資格証明で作成したものを指定します

  • --auth-user に、SMTPユーザー名
  • --auth-passwordは、SMTPユーザーのパスワード

他は、こんな感じ

  • --fromに設定するのは、
    Email Deliveryの承認済み送信者で設定したアカウト(メアド)
  • --headerにメール表題を指定できる。
    例は「【テスト】 from OCI(Email Delivery)!」をエンコードしたもの
  • --bodyは、メール本文をACSIIで。改行は \nで。
    (日本語のメール本文の指定方法がわからない...)

プロトコル・ログのサンプル

送信成功時のサンプル
=== Trying smtp.email.ap-tokyo-1.oci.oraclecloud.com:587...
=== Connected to smtp.email.ap-tokyo-1.oci.oraclecloud.com.
<-  220 smtp.email.ap-tokyo-1.oci.oraclecloud.com ESMTP smtp-in
 -> EHLO **Linuxサーバ名**
<-  250-smtp.email.ap-tokyo-1.oci.oraclecloud.com
<-  250-STARTTLS
<-  250 Ok
 -> STARTTLS
<-  220 Ready to start TLS
=== TLS started with cipher TLSv1.2:DHE-RSA-AES256-SHA256:256
=== TLS no local certificate set
=== TLS peer DN="/C=US/ST=California/L=Redwood City/O=Oracle Corporation/CN=smtp.email.ap-tokyo-1.oci.oraclecloud.com"
 ~> EHLO **Linuxサーバ名**
<~  250-smtp.email.ap-tokyo-1.oci.oraclecloud.com
<~  250-PIPELINING
<~  250-8BITMIME
<~  250-AUTH PLAIN
<~  250 Ok
 ~> AUTH PLAIN AG9reg(中略)KEr8F4= ※ユーザ名とパスワードをBASE64エンコードしたもの
<~  235 Authentication successful.
 ~> MAIL FROM:<no-reply@sub.hogegegege.net>
 ~> RCPT TO:<**宛先のメアド**>
 ~> DATA
<~  250 Ok
<~  250 Ok
<~  354 End data with <CR><LF>.<CR><LF>
 ~> Date: Thu, 09 Jun 2022 07:21:04 +0000
 ~> To: **宛先のメアド**
 ~> From: no-reply@sub.hogegegege.net
 ~> Subject: =?UTF-8?B?44CQ44OG44K544OI44CR?= from OCI(Email Delivery)!
 ~> Message-Id: <20220609072104.024869@**Linuxサーバ名**>
 ~> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
 ~>
 ~> email message... TEST
 ~> qwerty
 ~>
 ~> .
<~  250 Ok
 ~> QUIT
<~  221 Bye <id: 0A000402L46OXWGN>
=== Connection closed with remote host.

送信できない場合

プロトコル・ログから、エラー(SMTP応答コード)の内容を確認して対応しましょう。

私の場合「535 authorization failed」ってエラーに遭遇して、
認証?ユーザー名もパスワードも無問題ですよ?はて?となったんですが、
どうやら、SMTP認証じゃなくOCIのポリシーで引っかかていたようで、
Allow any-user to use email-family in compartment コンパートメント名って
ポリシーを追加設定して送信できるようになりました...

結局は、気合です。

RFCとか、SMTP応答コードとか

このあたりがとても参考になりました。感謝。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?