Intel Edison でメール送信 [現状]
[ 2015-02-22 ]
Edison から、メールの送信(mailx:Heirloom mailx)を行ってみました。
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 でサウンド再生・録音 』 |
コメント 0