| |
Unix 用
メールの送信元を書き換え再転送するシェルスクリプト - PDS for qmail
2006/06/11 by seclan.
seclan>ls
README reforward.tgz
seclan>cat README
qmail で メールの送信元を書き換え再転送するシェルスクリプト
- はじめに
.qmail ファイルにメールアドレスを書いて、そこに転送する場合、転送されたメールの送信者はオリジナルの送信者のままです。しかし、これが問題を引き起こす場合があります。送信されたメールをメールボックスに入れ、なおかつ別のアドレスに転送する場合を考えます。この場合、もし転送時、もしくは転送先でエラーが発生した場合、そのエラーメールは、元の送信者に戻されることになります。そうすると、元の送信者に内部の転送状況が知られてしまい、恥ずかしい思いをすることになります。
そのような状況を改善するため、転送時に送信者を、よそのアドレスに転送しない自分のメールボックス直通のメールアドレスに設定することにで、問題を改善できます。本スクリプトはそれを実現するためのものです。
- 導入
パッケージを解凍します。例えば、次のようにします。
tar xzf reforward.tgz
適切なパーミッション、所有者の設定を行い、qmail のバイナリディレクトリにコピーします。例えば、次のようにします。
chmod 755 reforward
chown root:qmail reforward
mv reforward /var/qmail/bin
./Maildir/ にメールをいれ、さらに outer@example.net に転送している場合、.qmail ファイルは以下のように設定していると思います。
./Maildir/
outer@example.net
これを以下のように書き換えます。ただし、転送設定がない自分のメールボックス直送のメールアドレスを mymailbox@example.com とします。このように設定すると、送信者が mymailbox@example.com に書き換えられ、そのメールが outer@example.net に送信されます。なおメール本文中の From: は書き換えられません。また、元の送信者のメールアドレスは、メールヘッダ中に X-Envelope-Sender: として書き込まれます。
./Maildir/
|/var/qmail/bin/reforward mymailbox@example.com outer@example.net
- その他
作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このスクリプトは PDS として公開します。
seclan>
|
qmail 用 .password を用いた smtp-auth/apop 対応パッチ仮想ユーザ対応版
2001/12/25 by seclan.
seclan>ls
README smtpauth.tgz
seclan>cat README
qmail 用 .password を用いた smtp-auth/apop 対応パッチ仮想ユーザ対応版
- はじめに
qmail では標準では smtp-auth には対応していません。また apop をするためのプログラムも提供されていません。本パッチを適用することで、.password というファイルを各ユーザの ./Maildir/ 内に作成することにより、smtp-auth 認証、apop 認証、pop 認証を行うことができるようになります。
また通常、メールの配送はリアルユーザ (実際の UNIX アカウントを持っているユーザ) だけですが、本パッチにより仮想ユーザ (UNIX アカウントを持たないメールアカウント) にも対応します。
本パッチの適用には、 Eric M. Johnston 氏作の PDS の qmail-smtpd AUTH patch、および、OHIRA, Shinya 氏作の PDS の checkpw-0.80 が必要です。また OHIRA 氏作成の vucheckpw の機能が取り込まれています。
- 導入
- qmail ディレクトリの control/locals に書かれているドメインに対し送られたメールは、/etc/passwd の中からユーザ名を検索して、そのホームディレクトリへメールを配送します。これをリアルユーザへの配送と言うことにします。また同じく、control/virtualdomains に記述されているドメインに対して送られたメールは、ある特定のユーザアカウント mailuser にて処理されます。このアカウントはメール処理専門のアカウントとしログインはできないようにしておきます。このアカウント上にて、実際の UNIX アカウントを持たずにメールだけの送受信可能な仮想ユーザを処理します。
- 仮想ユーザにも対応させる場合には、まず、アカウント名 mailuser、グループ名 mailuser というユーザを作成し、ホームディレクトリを作成してください。仮想ユーザのメールは全てこのアカウントで処理され、メールは全てそのディレクトリ内に保存されます。もしこの名前を変更する場合には、check.password.c の中にある VUSERS を定義しなおしてください。また以降の説明を適時読みなおしてください。
- パッケージを解凍します。例えば、次のようにします。
tar xzf smtpauth.tgz
tar xzf checkpw-0.80.tar.gz
tar xzf qmail-auth-20010105.tar.gz
tar xzf qmail-1.03.tar.gz
- checkpw に適切なパッチを当てます。例えば、次のようにします。
cd checkpw-0.80
patch -Ep1 < ../checkpw-0.80.smtp-auth.checkpw.diff
正しくパッチが当たったことを確認してください。
- qmail に適切なパッチを当てます。例えば、次のようにします。
cd qmail-1.03
cp ../qmail-auth-20010105/ba* ../qmail-auth-20010105/RE* .
patch -Ep1 < ../qmail-auth-20010105/auth.patch
正しくパッチが当たったことを確認してください。
- 好みに応じて、さらに qmail にパッチを当てます。例えば、次のようにします。
cd qmail-1.03
patch -Ep1 < ../checkpw-0.80/qmail-popup-auth.patch
正しくパッチが当たったことを確認してください。
このパッチを当てると pop / apop の両方で認証できるようになります。
- qmail, checkpw の各種設定をし、make と install をします。(make; make setup; make check)
- インストールされた check.password のモードが 4711 (rws--x--x) でユーザが root であることを確認してください。
- 仮想ユーザに対応する場合には、~mailuser/ に .qmail-default をコピーしてください。
- 注意点など
- qmail-popup, qmail-smtpd の実行前に必ず次のどれかの AUTH 環境変数値を設定してください。さもないと動作しません。
|
個別指定 |
|
AUTH=pop-plain | POP 平文認証 |
AUTH=pop-apop | APOP 認証 |
AUTH=smtp-cram-md5 | SMTP CRAM-MD5 認証 |
AUTH=smtp-login | SMTP login 認証 |
AUTH=smtp-plain | SMTP plain 認証 |
|
互換 |
|
AUTH=apop | APOP 認証 |
|
自動 |
|
AUTH=pop | (予め qmail-popup-auth.patch を当ててください)
"pop-apop" という環境変数があれば APOP
"pop-plain" という環境変数があれば 平文認証 |
AUTH=smtp |
"smtp-cram-md5" という環境変数があれば CRAM-MD5 認証
"smtp-login" という環境変数があれば 平文認証
"smtp-plain" という環境変数があれば 平文認証
response が渡されれば CRAM-MD5 認証
それ以外なら平文認証 |
|
- qmail-smtpd と qmail-popup は qmaild の権限で実行させてください。
- smtp-auth や pop の実行にあたってはパスワードを検査する必要がありますが、通常の qmail-smtpd / qmail-popup の実行権限 qmaild では検査できません。そこで check.password を root で setuid して実行させます。check.password は、まず始めに、呼び出したプロセスが root か qmaild かを検査します。もし root か qmaild のどちらでもない場合にはすぐに終了します。この動作により、従来と同等のセキュリティーを確保します。
- リアルユーザに対する smtp-auth/pop/apop 時のログイン名は通常通り、パスワードは .password で指定したものを与えてください。仮想ユーザではログイン名はメールアドレス、もしくはメールアドレスの @ を % にしたものを与えてください。パスワードに関してはリアルユーザと同様に、.password で指定したものを与えてください。
- 仮想ユーザが smtp-auth/pop/apop するにはメールボックスの作成が必要です。
- pop ログイン名に username-anything という名前を指定することで、~username/Maildir-anyrhing というメールボックスから POP できます。仮想ユーザも同様に、username-anything@example.com という名前を指定することで、~mailuser/example.com/username/Maildir-anyrhing というメールボックスから POP できます。
- プログラム以外の設定ファイル/文章はあまりなおしていません。したがってそのままだと不具合が出ることがあるかもしれません。適当に修正してください。
- 仮想ユーザへの対応
- 仮想ドメイン example.com の作成
mkdir ~mailuser/example.com
chown mailuser:mailuser ~mailuser/example.com
echo example.com >> /var/qmail/control/rcpthosts
echo example.com:mailuser >> /var/qmail/control/virtualdomains
qmail-start, qmail-smtpd を再起動
- 仮想ドメイン example.com の削除
/var/qmail/control/rcpthosts から example.com を削除
/var/qmail/control/virtualdomains から example.com:mailuser を削除
qmail-start, qmail-smtpd を再起動
rm -rf ~mailuser/example.com
- 仮想ユーザ user@example.com の追加
mkdir ~mailuser/example.com/user
chown mailuser:mailuser ~mailuser/user
- 仮想ユーザ user@example.com の削除
chmod +t ~mailuser/example.com/user
rm -rf ~mailuser/example.com/user
- 仮想ユーザ user@example.com にメールボックス作成
chmod +t ~mailuser/example.com/user
/var/qmail/bin/maildirmake ~mailuser/example.com/user/Maildir/
cat > ~mailuser/example.com/user/Maildir/.password
a password for the user
^D
chmod 600 ~mailuser/example.com/user/Maildir/.password
chown -R mailuser:mailuser ~mailuser/example.com/user/Maildir/
chmod -t ~mailuser/example.com/user
- 仮想ユーザ user@example.com 宛のメールを forward
chmod +t ~mailuser/example.com/user
cat > ~mailuser/example.com/user/.qmail
&forward_mail_address_1
&forward_mail_address_2
...
^D
chown mailuser:mailuser ~mailuser/example.com/user/.qmail
chmod -t ~mailuser/example.com/user
- 仮想ユーザ user@example.com のメールボックスへの配送と forward
前述の方法によりメールボックスを作成
chmod +t ~mailuser/example.com/user
cat > ~mailuser/example.com/user/.qmail
./Maildir/
&forward_mail_address_1
&forward_mail_address_2
...
^D
chown mailuser:mailuser ~mailuser/example.com/user/.qmail
chmod -t ~mailuser/example.com/user
- 仮想ドメイン example.com に対する catch-all アドレスの作成
(example.com 宛に来た全てのメールを受け取る)
chmod +t ~mailuser/example.com
cat > ~mailuser/example.com/.qmail
&forward_mail_address_1
&forward_mail_address_2
...
^D
chown mailuser:mailuser ~mailuser/example.com/.qmail
chmod -t ~mailuser/example.com
- 設定例
#!/bin/sh
# qmail-popup
UID_DAEMON=`id -u qmaild`
GID_DAEMON=`id -g qmaild`
exec 2>&1
exec env - DASH="-" AUTH="pop-apop" PATH="/var/qmail/bin:/usr/local/bin:/usr/bin:/bin" \
/usr/local/bin/tcpserver -Rv -c 40 \
-u $UID_DAEMON -g $GID_DAEMON \
0 110 \
qmail-popup `/bin/cat /var/qmail/control/me` /var/qmail/bin/check.password /var/qmail/bin/loginlog \
/bin/sh -c '
if [ -n "$EXT" ]; then dashext="$DASH""$EXT"; fi
exec /var/qmail/bin/qmail-pop3d Maildir"$dashext"
'
#!/bin/sh
# qmail-smtpd
UID_DAEMON=`id -u qmaild`
GID_DAEMON=`id -g qmaild`
exec 2>&1
exec env - AUTH="smtp-cram-md5" PATH="/var/qmail/bin:/usr/local/bin:/usr/bin:/bin" \
/usr/local/bin/tcpserver -Rv -c 40 \
-u $UID_DAEMON -g $GID_DAEMON \
0 25 \
recordio qmail-smtpd `/bin/cat /var/qmail/control/me` /var/qmail/bin/check.password /usr/bin/true
- その他
作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは内部のファイルに特に記していないものに関しては PDS として公開します。
seclan>
|
Message-ID & Date フィールド付加パッチ - PDS for qmail-1.03
2001/02/23 by seclan.
seclan>ls
README msgdate.tgz
seclan>cat README
qmail で Message-ID & Date フィールドを付加するパッチ
- はじめに
qmail は通常では、Message-ID を持たないメールに対しても Message-ID をつけません。これは RFC 的には正しいことなのですが不便です。この状態を解消するために、一旦別のユーザを経由することで qmail-inject を実行させ Message-ID をつける、といった技や、別のポートに専用のプログラムを立ち上げ Message-ID をつけないメーラはそこにメールをポストしてもらうというような方法が編み出されました。しかし、高々 Message-ID を付加するだけのことに、これらの方法は計算機の資源を使いすぎている気がします。そこで、sendmail のように単純に Message-ID を持たないメールに対しても Message-ID をふるパッチを作成しました。なおこのパッチは Date フィールドを持たない場合には、Date フィールドを付加します。パッチ対象は、qmail-1.03 です。
- 導入
- パッケージを解凍します。例えば、次のようにします。
tar xzf msgdate.tgz
tar xzf qmail-1.03.tar.gz
- qmail に適切なパッチを当てます。例えば、次のようにします。
cd qmail-1.03
patch -p1 < ../qmail-1.03.msg-date.diff
正しくパッチが当たったことを確認してください。
- それぞれのパッケージを make & install してください。
- その他
作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは PDS として公開します。
seclan>
|
Message-ID に独自ドメイン名をつけるパッチ - PDS for qmail-1.03
2001/04/21 by seclan.
seclan>ls
README msgdom.tgz
seclan>cat README
qmail で Message-ID に独自ドメイン名をつけるパッチ
- はじめに
qmail に Message-ID を付加するパッチを適用すると、Message-ID を持たないメールに対して Message-ID を自動的に付加するようになります。しかし、ここで生成される Message-ID はそのサーバのドメイン名に基づいています。このパッチは、指定した独自ドメインに基づいて Message-ID を構成するためのパッチです。指定した独自ドメインに基づく Message-ID を生成するためには条件があります。
- HELO hostname と MAIL FROM: <username@hostname> の hostname が一致すること。
- hostname がそのサーバで受信可能 (rcpthosts) なこと。
つまり、メーラの設定で自分のホスト名が hostname になっており、かつメールの差出人が 名前@hostname であり、そのドメイン hostname をホスティングしているサーバから出す場合ということです。
このパッチのパッチ対象は、qmail-1.03 です。
- 導入
- Message-ID を付加するパッチを適用します。
- パッケージを解凍します。例えば、次のようにします。
tar xzf msgdom.tgz
- qmail にパッチを当てます。例えば、次のようにします。
cd qmail-1.03
patch -p1 < ../qmail-1.03.orgdomain.diff
正しくパッチが当たったことを確認してください。
- それぞれのパッケージを make & install してください。
- その他
作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは PDS として公開します。
seclan>
|
miniBB ver1.03 日本語化キット
2002/07/20 by seclan.
seclan>ls
README minibb.1.03.euc.jpn.zip
seclan>cat README
http://www.miniBB.net/ で配布されている miniBB 1.03 を日本語化します
- はじめに
このキットは、http://www.miniBB.net/ で配布されている PHP+MySQL を使用した BBS miniBB 1.03 を日本語化するためのものです。
- 配布物一覧
同梱されているファイルは、次の通りです。
jpn.txt
lang/jpn.php
templates/email_admin_userregister.txt
templates/email_reply_notify.txt
templates/email_user_password.txt
templates/email_user_register.txt
- 日本語化の方法
- 同梱されているファイルを適切な位置にコピーします。
- setup_options.php の中の $lang を $lang='jpn'; に設定します。
- bb_functions.php の中の関数定義 sendMail の中にある関数呼び出し
function sendMail ($email, $subject, $msg, $from_email, $errors_email) {
....
mail($email, $subject, $msg, $from_email);
....
を
function sendMail ($email, $subject, $msg, $from_email, $errors_email) {
....
mb_send_mail($email, $subject, $msg, $from_email);
....
に変更します。
seclan>
|
|