プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

メールサーバの設定でハマった

メールサーバにpostfixを使っているんですが、これでひどく詰まったのでご紹介。

Railsでは基本メールの設定はconfig/environments/XXX.rbの中に書きます。

config.action_mailer.smtp_settings = {
    :enable_starttls_auto => true,
    :address              => '127.0.0.1',
    :port                 => 25,
    :domain               => "localhost",
    :authentication       => :plain,
    :user_name            => 'hoge',
    :password             => 'hogehoge'
  }

で、このユーザ名とパスワードなんですが、これはdatabase.ymlなんかでこのように書くとMySQL等のユーザになりますよね。

で、postfix側の事情なんですが、postfixではpostfix用のユーザを作るよりもOSのユーザで認証させられるようにするほうが便利なようなので
saslauthdというデーモンを使って、システムのユーザでauthenticateできるようにしました。

ところが、これが詰まった。何度やっても
Net::SMTPAuthenticationError: 535 5.7.8 Error: authentication failed: authentication failure
と出てくる。


正解は

sudo vi /etc/sysconfig/saslauthd ※編集
# MECH = pam
MECH = shadow <= 認証方式をshadowに切り替える

sudo /etc/init.d/saslauthd restart

/usr/sbin/testsaslauthd -u admin -p adminadmin
  0: OK "Success."

まぁ設定見なおせばただ終わるようなものなので、今考えるとなぜ半日詰まってたのかってレベルなんですが、一つ言い訳をすると
もう一つのホスト(AWSのインスタンスのクローン)のほうではMECH = pamでも送信できたんですよね・・・。

postfixとかのメールサーバってのはWebサービスやる上で基本的に欲しいものだと思うのに、意外とメジャーな情報が少なくて困る。
今度書籍買ってちゃんと勉強しますorz