表紙 / 自作ソフト / 日記 / 宝箱 / サイト情報 / 検索

自作ソフトウエア

このページには、私 seclan が作成した、Windows, DOS, UNIX, Web, C 言語用のソフトウエアが置いてあります。new がついているソフトは比較的最近更新されたことをあらわしています。


Unix 用

メールの送信元を書き換え再転送するシェルスクリプト - PDS for qmail
2006/06/11 by seclan.
seclan>ls
README reforward.tgz
seclan>cat README

qmail で メールの送信元を書き換え再転送するシェルスクリプト
  1. はじめに

    .qmail ファイルにメールアドレスを書いて、そこに転送する場合、転送されたメールの送信者はオリジナルの送信者のままです。しかし、これが問題を引き起こす場合があります。送信されたメールをメールボックスに入れ、なおかつ別のアドレスに転送する場合を考えます。この場合、もし転送時、もしくは転送先でエラーが発生した場合、そのエラーメールは、元の送信者に戻されることになります。そうすると、元の送信者に内部の転送状況が知られてしまい、恥ずかしい思いをすることになります。

     そのような状況を改善するため、転送時に送信者を、よそのアドレスに転送しない自分のメールボックス直通のメールアドレスに設定することにで、問題を改善できます。本スクリプトはそれを実現するためのものです。

  2. 導入
    1. パッケージを解凍します。例えば、次のようにします。

      tar xzf reforward.tgz
    2. 適切なパーミッション、所有者の設定を行い、qmail のバイナリディレクトリにコピーします。例えば、次のようにします。

      chmod 755 reforward
      chown root:qmail reforward
      mv reforward /var/qmail/bin
      
    3. ./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
      
  3. その他
     作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このスクリプトは 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 対応パッチ仮想ユーザ対応版
  1. はじめに
     qmail では標準では smtp-auth には対応していません。また apop をするためのプログラムも提供されていません。本パッチを適用することで、.password というファイルを各ユーザの ./Maildir/ 内に作成することにより、smtp-auth 認証、apop 認証、pop 認証を行うことができるようになります。
     また通常、メールの配送はリアルユーザ (実際の UNIX アカウントを持っているユーザ) だけですが、本パッチにより仮想ユーザ (UNIX アカウントを持たないメールアカウント) にも対応します。
     本パッチの適用には、 Eric M. Johnston 氏作の PDS の qmail-smtpd AUTH patch、および、OHIRA, Shinya 氏作の PDScheckpw-0.80 が必要です。また OHIRA 氏作成の vucheckpw の機能が取り込まれています。
  2. 導入
    1. qmail ディレクトリの control/locals に書かれているドメインに対し送られたメールは、/etc/passwd の中からユーザ名を検索して、そのホームディレクトリへメールを配送します。これをリアルユーザへの配送と言うことにします。また同じく、control/virtualdomains に記述されているドメインに対して送られたメールは、ある特定のユーザアカウント mailuser にて処理されます。このアカウントはメール処理専門のアカウントとしログインはできないようにしておきます。このアカウント上にて、実際の UNIX アカウントを持たずにメールだけの送受信可能な仮想ユーザを処理します。
    2. 仮想ユーザにも対応させる場合には、まず、アカウント名 mailuser、グループ名 mailuser というユーザを作成し、ホームディレクトリを作成してください。仮想ユーザのメールは全てこのアカウントで処理され、メールは全てそのディレクトリ内に保存されます。もしこの名前を変更する場合には、check.password.c の中にある VUSERS を定義しなおしてください。また以降の説明を適時読みなおしてください。
    3. パッケージを解凍します。例えば、次のようにします。
      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
    4. checkpw に適切なパッチを当てます。例えば、次のようにします。
      cd checkpw-0.80
      patch -Ep1 < ../checkpw-0.80.smtp-auth.checkpw.diff
      正しくパッチが当たったことを確認してください。
    5. qmail に適切なパッチを当てます。例えば、次のようにします。
      cd qmail-1.03
      cp ../qmail-auth-20010105/ba* ../qmail-auth-20010105/RE* .
      patch -Ep1 < ../qmail-auth-20010105/auth.patch
      正しくパッチが当たったことを確認してください。
    6. 好みに応じて、さらに qmail にパッチを当てます。例えば、次のようにします。
      cd qmail-1.03
      patch -Ep1 < ../checkpw-0.80/qmail-popup-auth.patch
      正しくパッチが当たったことを確認してください。
      このパッチを当てると pop / apop の両方で認証できるようになります。
    7. qmail, checkpw の各種設定をし、make と install をします。(make; make setup; make check)
    8. インストールされた check.password のモードが 4711 (rws--x--x) でユーザが root であることを確認してください。
    9. 仮想ユーザに対応する場合には、~mailuser/ に .qmail-default をコピーしてください。
  3. 注意点など
    • qmail-popup, qmail-smtpd の実行前に必ず次のどれかの AUTH 環境変数値を設定してください。さもないと動作しません。

      個別指定

      AUTH=pop-plainPOP 平文認証
      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 できます。
    • プログラム以外の設定ファイル/文章はあまりなおしていません。したがってそのままだと不具合が出ることがあるかもしれません。適当に修正してください。
  4. 仮想ユーザへの対応
    • 仮想ドメイン 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
  5. 設定例

    #!/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

  6. その他
     作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは内部のファイルに特に記していないものに関しては 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 フィールドを付加するパッチ
  1. はじめに
     qmail は通常では、Message-ID を持たないメールに対しても Message-ID をつけません。これは RFC 的には正しいことなのですが不便です。この状態を解消するために、一旦別のユーザを経由することで qmail-inject を実行させ Message-ID をつける、といった技や、別のポートに専用のプログラムを立ち上げ Message-ID をつけないメーラはそこにメールをポストしてもらうというような方法が編み出されました。しかし、高々 Message-ID を付加するだけのことに、これらの方法は計算機の資源を使いすぎている気がします。そこで、sendmail のように単純に Message-ID を持たないメールに対しても Message-ID をふるパッチを作成しました。なおこのパッチは Date フィールドを持たない場合には、Date フィールドを付加します。パッチ対象は、qmail-1.03 です。
  2. 導入
    1. パッケージを解凍します。例えば、次のようにします。
      tar xzf msgdate.tgz
      tar xzf qmail-1.03.tar.gz
    2. qmail に適切なパッチを当てます。例えば、次のようにします。
      cd qmail-1.03
      patch -p1 < ../qmail-1.03.msg-date.diff
      正しくパッチが当たったことを確認してください。
    3. それぞれのパッケージを make & install してください。
  3. その他
     作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは 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 に独自ドメイン名をつけるパッチ
  1. はじめに
     qmail に Message-ID を付加するパッチを適用すると、Message-ID を持たないメールに対して Message-ID を自動的に付加するようになります。しかし、ここで生成される Message-ID はそのサーバのドメイン名に基づいています。このパッチは、指定した独自ドメインに基づいて Message-ID を構成するためのパッチです。指定した独自ドメインに基づく Message-ID を生成するためには条件があります。
    1. HELO hostname と MAIL FROM: <username@hostname> の hostname が一致すること。
    2. hostname がそのサーバで受信可能 (rcpthosts) なこと。
    つまり、メーラの設定で自分のホスト名が hostname になっており、かつメールの差出人が 名前@hostname であり、そのドメイン hostname をホスティングしているサーバから出す場合ということです。
    このパッチのパッチ対象は、qmail-1.03 です。
  2. 導入
    1. Message-ID を付加するパッチを適用します。
    2. パッケージを解凍します。例えば、次のようにします。
      tar xzf msgdom.tgz
    3. qmail にパッチを当てます。例えば、次のようにします。
      cd qmail-1.03
      patch -p1 < ../qmail-1.03.orgdomain.diff
      正しくパッチが当たったことを確認してください。
    4. それぞれのパッケージを make & install してください。
  3. その他
     作者はソフトウエアが必ずしも正しく動作することを保証しません。使用者の責任において使用してください。また本ソフトウエアを使用した上で生じたいかなる損害についても、作者は一切の責任を負いません。なお、このパッチは 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 を日本語化します
  1. はじめに
     このキットは、http://www.miniBB.net/ で配布されている PHP+MySQL を使用した BBS miniBB 1.03 を日本語化するためのものです。
  2. 配布物一覧
     同梱されているファイルは、次の通りです。
    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
    
  3. 日本語化の方法
    1. 同梱されているファイルを適切な位置にコピーします。
    2. setup_options.php の中の $lang を $lang='jpn'; に設定します。
    3. 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>

表紙 - 著作権 - 注意事項 - リンクについて - 404 エラーについて
(c)1999-2010 seclan. All rights reserved.