Raspberry pi 上で稼働するシステムを開発していて、メールの送信で小ハマリしたのでメモ。
Raspberry piからメールを発信したいのだが、通常のポート25ではなく、サブミッション・ポート 758 を使用して発信したい。
そこで、ssmtpをインストールして送信する事にした。
ssmtpをインストールし、設定を行う。
設定はこんな感じか。
# cd /etc/ssmtp
# vi ssmtp.conf
----------
mailhub=*****.co.jp:587
AuthUser=*****
AuthPass=*****
AuthMethod=LOGIN
UseTLS=Yes
UseSTARTTLS=Yes
----------
送信してみる。
$ sendmail -t
From:*****.co.jp
To:*****.co.jp
Subject:TEST
TEST
sendmail: Authorization failed (535 5.7.8 Error: authentication failed: authentication failure)
$
へ? Authorization failed だと?
同じサーバ上の別のメール・アカウントで試してみる。
$ sendmail -t
From:*****@*****.co.jp
To:*****@*****.co.jp
Subject:TEST
TEST
$
送信できた。
最初に試したメール・アカウントだけがうまくない。
どゆこと?
パスワードを簡単なものに変えてみる。
送信できた。
パスワードで使用できない文字があるのか。
パスワードを1文字づつ変えながらリトライしてみる。
むむむ、パスワードに「#」が含まれていると送信エラーになるようだ。
「#」がダメって…まさか、設定ファイル(/etc/ssmtp/ssmtp.cof)の読み込みで、「#」以降を無条件にコメントとして削除してしまうようなショボい話じゃないだろうなー。
ssmtpのソースコードを確認してみる。
/*
read_config() -- Open and parse config file and extract values of variables
*/
bool_t read_config()
{
(略)
while(fgets(buf, sizeof(buf), fp)) {
char *begin=buf;
char *rightside;
/* Make comments invisible */
if((p = strchr(buf, '#'))) {
*p = (char)NULL;
}
(略)
がっくり。orz