いくつか管理しているLinuxサーバを,1日1台のペースで,Ubuntu 14.04 (Trusty Tahr)にアップグレードしていき,昨日終了しました.
アップグレードの方法はというと,リモートシェルを使ってapt-get upgradeを済ませておき,GUIで端末を開いて「update-manager -d」を実行し,あとは指示に従うだけです.注意深く,再起動もしました.
なのですが,アップグレード後,メールが送信できなくなってしまいました.送信ボタンを押すと,小さなウィンドウが出て,ユーザ名・パスワードを入力するよう促されます.そこで何を打ち込んでも,入力せよに戻ります.
メールを取得し,読むことはできました.そこで,DovecotではなくSASLが原因かなと見当をつけた上で,サーバ内部のファイルを参照しながら,Webで情報収集していると,答えが見つかりました.
対処コマンドは,次のとおりです.
$ cd /var/run $ sudo ln -s /var/spool/postfix/var/run/saslauthd $ sudo service saslauthd restart
2番目のコマンドで,/var/run/saslauthdが作られます.これは/var/spool/postfix/var/run/saslauthdへのシンボリックリンクとなります.別の言い方をすると,/var/run/saslauthdという,ディレクトリ相当のものが作られ,それは「シンボリックリンク」というメカニズムのもと,/var/spool/postfix/var/run/saslauthdと同一視されます.
なお,/var/run/saslauthdが存在しないことと,/var/spool/postfix/var/run/saslauthdが存在することについては,lsコマンドまたはファイル名補完を使って要チェックです.自分の場合,自宅メールサーバで書いた手順をもとに,設定していました.
これでメールが送れるようになったのですが,サーバ上でも,saslauthdの認証が使えるかどうかを,1つのコマンド実行で(root権限なしで)確かめられることができます.「testsaslauthd -u ユーザ名 -p パスワード」で,失敗すると以下の出力となります*1.
connect() : No such file or directory 0:
成功だと,以下の通りです.
0: OK "Success."
*1:「0: 」の直後は改行が出力されません.