リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2005-03-08

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005-03-08 Tue

* 統計科学のための電子図書システムのWebページ

http://www.sci.kagoshima-u.ac.jp/~ebsa/index.html
とりあえずメモ。

* openssh and "You have new mail."

arno にSSH経由でログインした時に「You have new mail.」というメッセー
ジが出ないのがずっと気になっていたが、原因と対策が判明。

・原因:
1. tcsh はログインシェルの時は、メールチェックを行わない。
2. OpenSSH は独自のログイン処理を行うので、メールチェックを行わない。

tcsh のマニュアルの mail シェル変数の説明によれば、ログインシェル
として、シェルが起動された場合は、新着メールの通知を行わないそう
な…。
If you are in a login shell, then no mail file is
reported unless it has been modified after the
time the shell has started up, to prevent redun-
dant notifications. Most login programs will tell
you whether or not you have mail when you log in.
from: http://www.tcsh.org/tcsh.html/Special_shell_variables.html#mail

しかも、OpenSSH の sshd は 3.0 から CheckMail ディレクティブを廃止
している。

結果、ログイン時にはどのプログラムも新着メールを確認してくれない状
態になっていた。

・対策:
色々探してみても、あまり直接的な回答は見当たらなかったが、次のよう
な説明があった。
http://lists.ssc.com/pipermail/linux-list/2002-June/012802.html
So *why* is CheckMail depreciated? Because OpenSSH sees no
reason to perform cross-platform new mail notifications when
it could be handled by the PAM instead. It's not really
a login tool's job to tell you that you have new email.

つまり、「クロスプラットフォーム環境でメール確認をするのは面倒だか
ら、PAMを使え」とのこと。

そこで、/etc/pam.d/sshd に以下の一行を追加:

session optional pam_mail.so

デフォルトでは、sshd の方が PAM を使うようになっていないので、
/etc/sshd_config で PAM を有効にする:

UsePAM yes

これで、ログイン時にメールチェックされるようになった:
% ssh arno
masao@arno's password:
You have new mail in /var/mail/masao.

Last login: Tue Mar 8 17:04:05 2005 from nile.slis.tsukuba.ac.jp
Welcome to Turbolinux.
masao@arno%

・結論:
tcsh+OpenSSH環境でログイン時にメールチェックされない場合は、
1. PAM をログインセッション開始時にメールチェックするよう設定し、
2. OpenSSH の設定を PAM を使うように直す。
Referrer (Inside): [2006-04-30-2]