ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
MTAとしてsendmailを使っている時のローカル配送ルールの設定ファイルの一つ。
対象ユーザーのホームディレクトリ上にこのファイルがある時に、その内容に従い適宜処理を行なう。
転送、コピー配送、任意のコマンドを起動してパイプで渡す、といった用途に使用される。ユーザーが自分で設定可能である。なお、管理者が設定する場合は普通、/etc/mail/aliasesを用いる。
メールを受信したアドレスをwdic@example.comとする。
もしwdic@example.comに届いたメールをすべてwdic@example.orgに転送したいなら、ホームディレクトリの.forwardに以下のように記述する。
wdic@example.org
複数のアドレスに転送することも可能。
wdic@example.org
wdic@example.net
wdic@example.jp
さらに多くのアドレスに転送したい場合、
":include:/home/wdic/myaddresses"
と記述しておけば、/home/wdic/myaddresses に書かれたすべてのアドレスに転送される。
転送の場合、このメールアドレスのメールボックスにはメールが残らない。
もしメールボックスにメールを残しつつ転送したいなら、"\"に続けて自分のメールアドレスを記述する。
\wdic@example.com
wdic@example.org
この例では、届いたメールをメールボックスに残しつつ、wdic@example.orgにも転送する。
例えば、メールのfrom:やsubject:ごとに異なる処理をする(例えば、Aさんからのメールは転送、Bさんからのメールはそのままごみ箱へ)ためには、パイプラインを利用することもできる。
"| /home/wdic/bin/mail.sh || exit 75"
上のように記述すると、メールが届くと/home/wdic/bin/mail.sh を起動し、メール全体(ヘッダも含めて)がこのプログラムの標準入力に渡される。
"|| exit 75" は一時的なエラー(もう一度行なったらエラーにならない可能性がある)の意味で、こうしておくと、このプログラムの起動でエラーが発生したらsendmailは再配送のキューにこのメッセージを格納する。
なお、この目的では自分でプログラムを書かず、procmailというコマンドを使うことが多い。
例えば、以下のような設定をしたとする。
こうすると、wdic@example.orgにメールが届くとexample.orgはこのメールをwdic@example.comに転送し、example.comは転送されてきたメールをwdic@example.orgに転送し、example.orgはその転送されてきたメールを再びwdic@example.comに転送し…と無限ループになるので、このような設定は避けなければならない。
2台だと分かり易いが、マシンがより多くなるとついうっかりこのような設定をしてしまうこともあり得る。
.forwardを使ってプログラムを起動するとき、現在のsendmailでは、適切に設定されていればその実行uidは.forwardの持ち主のものとなる。よって、プログラムの内容によっては、自分の重要なファイルを消してしまったり、他人に公開してしまったりする恐れがある。
(もう存在しないと信じたいが)古いsendmailを使っていたり、サーバーの設定が不適切だったりすると、その実行uidが0、つまりroot権限で実行する。よって、例えば先のmail.sh にこのように記述すると、セキュリティ上の問題がある。
#!/bin/sh
かつてメールアドレスが自由に得られず、shellが自由に使え、MTAといえばsendmailしか見なかった時代には、.forwardを駆使して自分のメールアドレスを使ってメーリングリストを立ち上げた人もいたらしい。
つまり、.forwardに
/wdic@example.org
"| /home/wdic/bin/mlserver.pl || exit 75"
などとしておき、mlserver.pl内でメールに特定のキーワードがあればML宛と見做してメンバーに配送、そうでなければ個人宛とみなし配送しない、という処理を行なう。
もちろん、現在はこのようなことをしなくともMLは簡単に作れるし、ループの可能性もあるのでやるべきではない。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます