プロが教えるわが家の防犯対策術!

現在、CentOS6 + dovecot-1.2.0-2el6_1.1 + postfixの組み合わせでメール環境を構築してあります。
ところが、昨日から突然クライアント(Windows上のThunderbird14.0)でメールが読めなくなってしまいました。
Thunderbirdを起動するとパスワードの入力を求められ、正しいパスワードを入力しているのですが、
「サーバ server.example.org へのログインに失敗しました。」
と表示され、もう一度パスワードの入力を求められます。
それを繰り返しているうちに画面右下のあたりに「サーバとの接続に失敗しました」と表示されます。

そこでWindowsPCから
>telnet server.example.org 143
としてサーバにつなぐと
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE START
TLS AUTH=PLIN] Dovecot ready.
と返事が返ってきます。
そこで
A LOGIN ユーザ名 パスワード
と入力すると
* BYE Internal error occurred. Refer to server log for more information.
と表示され、即効で
ホストとの接続が切断されました。
と表示され、接続が切断されます。

logを見て確認しようと思ったのですが、dovecotがどこにメッセージをはいているのかわからず、ここままでお手上げになってしまいました。

ちなみに
/etc/dovecot/conf.d/10-auth.conf
には
disable_plaintext_auth = no
としてあり、
上記のユーザ名とパスワードはコンソールからログインするときに使うプレインテキストを使っています。
また、メール送信は問題なく、受信もhome/Maildir/new/の中のファイルを直接lessしたところ問題ないことを確認してあります。

今、別のアカウントを作って試してみたところ受信のエラーも出ず、telnetしてa loginしてみても

a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL -IR LOGIN-REFERRALS ID ENABLE IDLE SORT
SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESSORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in

と表示され、無事ログインできます。
となると、私のアカウントのみがログインできない状態になってしまっているようです。

どなたか、ここが怪しいといった点でも結構ですので、ヒントをいただけないでしょうか?

A 回答 (3件)

>もしよろしければ、コンテキストの変更方法を教えていただけないでしょうか?



chcon --helpとか、man chconすると
--referenceってオプションの存在に気付くかと…。
たしかディレクトリでもOKだったかと。

restorecond辺りがコンテキストとか戻してしまった…のかもしれません。
    • good
    • 0
この回答へのお礼

度々のご回答ありがとうございます。

chconについて調べてみて、コンテキストの書き換えは無事できました。
続いて、
# setenforce 1
にして、クライアントからメールを読み込もうとすると、またもエラーが出て、コンテキストが見たこともないものに書き換わってしまいました。

そこで、chconについてググってみますと似たようなコマンドでsemanageというものを見つけました。
そこで、
# semanage fcontext -a -t user_home_t:s0 /home/ユーザ名/Maildir
# semanage fcontext -a -t user_home_t:s0 "/home/ユーザ名/Maildir/.*"
# restorecon -R /home/ユーザ名/Maildir/
としてみたところ、コンテキストの書き換えがMaildir以下すべてのファイルとディレクトリについて出来ました。

すると今度はクライアントPCから無事読み込むことができました。
一応
# semanage fcontext -d -t user_home_t:s0 /home/ユーザ名/Maildir
# semanage fcontext -d -t user_home_t:s0 "/home/ユーザ名/Maildir/.*"
としても問題なく読み込むことができました。

これが、正解かわかりませんが、とりあえず使えるようになったというご報告まで。

ありがとうございました。

お礼日時:2012/08/18 12:18

>できればSELinuxを有効にしたままで運用したいのですが、どなたかヒントでも結構ですので、ご教示をお願いいたします。



ユーザーのホームディレリクトリの下に置いているようなので…
タイプとかその辺りの問題でしょう。

ls -laZ /home/ユーザ名/Maildir
って感じで情報が出てくるかと。
chconコマンドで設定できるはずです。
# どう設定するのが正しいのか…については不明。

/var/log/audit/audit.logに何か残っているかも知れません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘いただいたログを見たところ、

type=USER_AUTH msg=audit(1345077764.478:34286): user pid=3369 uid=0 auid=500 ses=1 subj=unconfined_u:system_r:dovecot_auth_t:s0 msg='op=PAM:authentication acct="ユーザ名" exe="/u" hostname=xxx.xxx.xxx.xxx addr=xxx.xxx.xxx.xxx terminal=dovecot res=failed'

という行が見られました。(ログの見方がわからないので、おそらくこの行だろうという行を書きました。)

また、
ls -laZ ~/
としてみると(SELinuxに関する部分だけ記述します。)
system_u:object_r:user_home_t:s0 .Drafts
unconfined_u:object_r:user_home_t:s0 new
unconfined_u:object_r:user_home_t:s0 tmp
といった具合に2種類のコンテキストが混在しています。

また、~/Maildir自体は
unconfined_u:object_r:mail_home_rw_t Maildir
となっています。

これが別のメールの読めるユーザに関しては
system_u:object_r:user_home_t:s0 Maildir
となっています。

ここら辺が怪しいなと思うのですが、コンテキストの変更方法がわからないため、手詰まりになってしまいました。

もしよろしければ、コンテキストの変更方法を教えていただけないでしょうか?
また、正しいコンテキストをご存知の方がおいででしたら、ぜひそちらについてもお願いします。

お礼日時:2012/08/17 09:33

/etc/dovecot/conf.d/ の中に 10-logging.conf というファイルがありませんか?


あれば、その中に log_path という設定項目でログの出力先が設定されていると思います。

この回答への補足

ご指摘いただいたファイルを読んでいたところ、どうやら
/var/log/maillog
にログが出力されていそうだということがわかりました。

そこで上記のファイルを見ると

Aug 16 17:08:25 サーバ名 dovecot: imap-login: Login: user=<ユーザ名>, method=PLAIN, rip=xxx.xxx.xxx.xxx, lip=yyy.yyy.yyy.yyy, mpid=9662, TLS
Aug 16 17:08:25 bonito dovecot: imap(ユーザ名): Error: user ユーザ名: Initialization failed: Initializing mail storage from mail_location setting failed: stat(/home/ユーザ名/Maildir) failed: Permission denied (euid=500(ユーザ名) egid=500(ユーザ名) missing +r perm: /home/ユーザ名/Maildir, euid is not dir owner)
Aug 16 17:08:25 サーバ名 dovecot: imap(ユーザ名): Error: Invalid user settings. Refer to server log for more information.

となっていました。
(xxx.xxx.xxx.xxxはクライアントのIP、yyy.yyy.yyy.yyyはサーバのIP)

euid is not dir owner
という部分が気になったので調べてみたところ、どうやらSELinuxの問題らしいというところまでわかりました。
試しに
# setenforce 0
とすると、Thunderbirdでメールが読めました。
しかし、
# setenforce 1
とすると、やはりエラーになってしまいます。

なんとかここまでは調べたのですが、ここで手詰まりになってしまいました。

できればSELinuxを有効にしたままで運用したいのですが、どなたかヒントでも結構ですので、ご教示をお願いいたします。

補足日時:2012/08/16 17:31
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
ご指摘いただいたファイルを見たところ、
plugin{
}
の2行以外すべて#でコメントになっていました。

この場合、ログはどこに出力されるのでしょうか?
/var/log/syslogあたりかと思ったのですが、そもそも/var/log/syslogが存在しません。

syslogに出力するような設定が必要なのでしょうか?

よろしければ、そこらへんも含めてご教示いただけるとありがたいです。

お礼日時:2012/08/16 16:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!