SSブログ

Intel Edison でメール送信 [現状]

[ 2015-02-22 ]

 Edison から、メールの送信(mailx:Heirloom mailx)を行ってみました。

Intel Edison.jpg

 Edison Image の開発環境をセットアップした Ubuntu マシン上で、イメージを作成します。(Intel のサイトでは、ソースコードなどがアップデートされています。 2015 年 1 月末バージョンを使用。)

 以前、別の PC へ構築した開発環境の時は、初期の提供ソースの不整合(32bit 指定関連)と USB AUDIO の設定に抜けがあったのですが、それらも修正されていました。

 追加するパッケージを「edison-src/device-software/meta-edison-distro/recipes-core/images/edison-image.bb」ファイルへ
IMAGE_INSTALL += "mailx"
と指定して、bitbake します。

 この新たに作成したイメージを Edison に書き込み、メールの送信確認を行います。

 今回行ったのは、So-net(Outbound Port25 Blocking(OP25B))と Gmail(2 段階認証プロセス)を使用する設定です。 カット&トライを行った結果、こちらの環境では上手くいきました。

 「~/.mailrc」ファイルを作成します。
注)パスワードを記述する関係から、ユーザのみ読み書きを許可するようにパーミッションを設定。

~ So-net の場合 ~

 So-net 用設定内容:
	account so-net {
	#	set smtp-use-starttls
		set smtp=smtp://mail.so-net.ne.jp:587
		set smtp-auth=login
		set smtp-auth-user=foo@XXX.so-net.ne.jp
		set smtp-auth-password=foopassword
		set from="NAME <foo@XXX.so-net.ne.jp>"
	#	set ssl-verify=ignore
	}

動作確認)
 "set smtp-use-starttls" を指定すると
>>> EHLO edison
>>> STARTTLS
>>> EHLO edison
>>> AUTH LOGIN
...
のように、「STARTTLS」が発行されますが、So-net ではダメでした。(-v 指定で検証)

 この時の、エラーは
「Error with certificate at depth: 3」で
「err 19: self signed certificate in certificate chain」と報告されます。

 上記の設定内容にすると、正常に送信できました。

~ Gmail の場合 ~

 Gmail の場合には、「2 段階認証プロセス」を使用している場合、前もって「アプリパスワード」を発行しておく必要があります。

前準備)
 1)Google アカウントへログインします。
 2)「アプリパスワード」画面へ移動します。
 3)画面の[端末を選択▼]から「その他(名前を入力)」で、適当な名前(マシン名など)を入力して[生成]ボタンを押します。

 16 桁のパスコードが生成される(空白は無視)ので、それをパスワード("smtp-auth-password")へ設定します。

 Gmail 用設定内容:
	account gmail {
		set smtp-use-starttls
		set smtp=smtp://smtp.gmail.com:587
		set smtp-auth=login
		set smtp-auth-user=foo@gmail.com
		set smtp-auth-password=xxxxxxxxxxxxxxxx
		set from="NAME <foo@gmail.com>"
		set ssl-verify=ignore
	}

動作確認)
 "set smtp-use-starttls" が未指定だと
 「Must issue a STARTTLS command first.」と報告されます。
 そのため、「STARTTLS」コマンドを送信するために "set smtp-use-starttls" を指定します。

 しかし、"set ssl-verify=ignore" を指定しないとダメでした。

 この時の、エラーは
「Error with certificate at depth: 2」で
「err 20: unable to get local issuer certificate」と報告されます。

 上記の設定内容にすると、正常に送信できました。

注)いずれの設定においても "smtp-auth-user" と "from" のアドレスは、同一でないと「迷惑メール」とみなされたり、「送信ドメイン認証」などで弾かれたりする可能性もありそうです。

 実際の送信時には、「-A」オプションでアカウントを切り替えて使用します。

・So-net を使用して、mail.txt の内容を本文として送信
root@edison:~# mailx -A so-net -s 'subject' 'foo@foo.co.jp' < mail.txt

・Gmail を使用して、mail.txt の内容を本文として送信
root@edison:~# mailx -A gmail -s 'subject' 'foo@foo.co.jp' < mail.txt

 このままでは、日本語が通らないので「-a」オプションで添付ファイルにするか、前もって変換(iconv や nkf などで)する必要があるようです。(文字コードに対応した "Content-Type: text/plain; charset=EUC-JP" などの設定も...)

 現状の Edison ではロケールに ja 関連が入っていないようなので、mailx が送信時に変換する機能は上手く動作しません。
 日本語で書かれた本文(mail.txt)の文字コードが不明のためなのか、変換できないためなのか、添付ファイルとなったりするようです。(So-net と Gmail で確認) ちなみに docomo(スマートフォン)へ送信すると、"[添付ファイル削除]" が本文へ表示されるのみでした。(^^;

前の関連記事 『 Edison で音声合成 』 次の関連記事 『 Edison でサウンド再生・録音 』

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。