メールサーバの設定でハマった
メールサーバに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