メール管理 · 5 min read · Jan 09, 2026

Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (CentOS 6.0 x86_64) - ページ 6

18 SquirrelMailのインストール

SquirrelMailは、ユーザーがブラウザでメールを送受信できるウェブメールインターフェースです。この章では、SquirrelMailをインストールし、ユーザーがSquirrelMailインターフェースからメールアカウントのパスワードを変更できるように設定する方法を示します。

SquirrelMailをインストールするには、次のコマンドを実行します:

yum install squirrelmail php-pear-DB

その後、Apacheを再起動します:

/etc/init.d/httpd restart

SquirrelMailにはいくつかのプラグインがプリインストールされていますが、残念ながら、どれもMySQLデータベース内のメールパスワードを変更することはできません。しかし、手動でインストールできるChange SQL Passwordプラグインがあります:

cd /usr/share/squirrelmail/plugins  
wget http://www.squirrelmail.org/plugins/change_sqlpass-3.3-1.2.tar.gz  
tar xvfz change_sqlpass-3.3-1.2.tar.gz  
cd change_sqlpass  
cp config.php.sample config.php

次に、config.phpを編集し、設定に合わせて調整する必要があります。以下のように、$csp_dsn、$lookup_password_query、$password_update_queries、$password_encryption、$csp_salt_static、および$csp_delimiter変数を調整し、$csp_salt_queryをコメントアウトしてください:

vi config.php

| [...] $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; [...] $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; [...] $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); [...] $password_encryption = 'MYSQLENCRYPT'; [...] $csp_salt_static = 'LEFT(password, 2)'; [...] //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; [...] $csp_delimiter = '@'; [...] |

完全なファイルは次のようになります:

| * 2002-2005 Paul Lesneiwski <[email protected]> * このプログラムはGPLの下でライセンスされています。詳細はCOPYINGを参照してください * * @package plugins * @subpackage Change SQL Password * */ // グローバル変数、プラグインを壊したくない限り、これに触れないでください // global $csp_dsn, $password_update_queries, $lookup_password_query, $force_change_password_check_query, $password_encryption, $csp_salt_query, $csp_salt_static, $csp_secure_port, $csp_non_standard_http_port, $csp_delimiter, $csp_debug, $min_password_length, $max_password_length, $include_digit_in_password, $include_uppercase_letter_in_password, $include_lowercase_letter_in_password, $include_nonalphanumeric_in_password; // csp_dsn // // 理論的には、Pearがサポートする任意のSQLデータベースがここでサポートされるべきです // DSN(データソース名)には、データベースバックエンドに接続するために必要な情報が含まれている必要があります。以下にMySQLの例を示します。 // DSN構文およびサポートされているデータベースタイプのリストの詳細については、次を参照してください: // http://pear.php.net/manual/en/package.database.db.intro-dsn.php // //$csp_dsn = 'mysql://user:password@localhost/email_users'; $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; // lookup_password_query // // このプラグインは常にユーザーの古いパスワードを // ログインパスワードと照合しますが、追加のチェックを行うこともできます // より安全のために、データベースに対して。 // 追加のパスワードチェックが必要ない場合は、 // この設定を空にしてください。 // // このクエリは、ユーザーとパスワードのペアが // データベースに見つかった場合に正の値を返します。 // // このクエリは1つの値(1行、1列)を返す必要があります。 // 値は理想的には1または0で、 // ユーザー/パスワードペアが実際にデータベースに存在することを示します。 // // %1はこのクエリで完全なユーザー名に置き換えられます // (ドメインを含む)、例えば"[email protected]" // %2はこのクエリでユーザー名(ドメイン部分なし)に置き換えられます // 例えば"jose" // %3はこのクエリでドメイン名に置き換えられます、 // 例えば"example.com" // %4はこのクエリで現在の(古い) // パスワードに置き換えられます。 // どの暗号化形式が必要かは他の // プラグイン設定に依存します(この // クエリでこの値の周りに引用符を提供する必要はありません)。 // %5はこのクエリで現在の(古い) // パスワードに未暗号化のプレーンテキストで置き換えられます。 // パスワード暗号化を使用しない場合、%4と%5は同じ値になりますが、 // %4には引用符が付いており、%5には付いていません。 // //$lookup_password_query = ''; // TERRIBLE SECURITY: $lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND plain_password = "%5"'; //$lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND crypt_password = %4'; $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; // password_update_queries // // パスワード変更の試行が行われるたびに実行される // SQLクエリの配列。 // // ここに任意の数のクエリを含めることができます。 // クエリはここに示された順序で実行されます。 // // %1はすべてのクエリで完全なユーザー名に置き換えられます // (ドメインを含む)、例えば"[email protected]" // %2はすべてのクエリでユーザー名(ドメイン部分なし)に置き換えられます // 例えば"jose" // %3はすべてのクエリでドメイン名に置き換えられます、 // 例えば"example.com" // %4はすべてのクエリで新しいパスワードに置き換えられます // どの暗号化形式が必要かは他の // プラグイン設定に依存します(この // クエリでこの値の周りに引用符を提供する必要はありません)。 // %5はすべてのクエリで新しいパスワードに置き換えられます // 未暗号化のプレーンテキストで - 注意! // パスワード暗号化を使用しない場合、%4と%5は同じ // 値になりますが、%4には引用符が付いており、 // %5には付いていません。 // // $password_update_queries = array( // 'UPDATE users SET crypt_password = %4 WHERE username = "%1"', // 'UPDATE user_flags SET force_change_pwd = 0 WHERE username = "%1"', // 'UPDATE users SET crypt_password = %4, force_change_pwd = 0 WHERE username = "%1"', // ); $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); // force_change_password_check_query // // ユーザーがパスワードを変更する必要があるかどうかを示すフラグを確認するクエリ。 // このクエリは、ユーザーがパスワードを変更する必要がない場合はゼロを、 // 変更する必要がある場合は1を返す必要があります。 // // この設定は、この機能を有効にしたくない場合は空の文字列にしてください。 // // %1はこのクエリで完全なユーザー名に置き換えられます // (ドメインを含む)、例えば"[email protected]" // %2はこのクエリでユーザー名(ドメイン部分なし)に置き換えられます // 例えば"jose" // %3はこのクエリでドメイン名に置き換えられます、 // 例えば"example.com" // //$force_change_password_check_query = 'SELECT IF(force_change_pwd = "yes", 1, 0) FROM users WHERE username = "%1"'; //$force_change_password_check_query = 'SELECT force_change_pwd FROM users WHERE username = "%1"'; $force_change_password_check_query = ''; // password_encryption // // データベースにパスワードを保存するために使用する暗号化方法は何ですか? // 次のいずれかを正確に使用してください: // // NONE パスワードはプレーンテキストとしてのみ保存されます // MYSQLPWD パスワードはMySQL password()関数を使用して保存されます // MYSQLENCRYPT パスワードはMySQL encrypt()関数を使用して保存されます // PHPCRYPT パスワードはPHP crypt()関数を使用して保存されます // MD5CRYPT パスワードは暗号化されたMD5アルゴリズムを使用して保存されます // MD5 パスワードはMD5ハッシュとして保存されます // //$password_encryption = 'MYSQLPWD'; $password_encryption = 'MYSQLENCRYPT'; // csp_salt_query // csp_salt_static // // 塩が必要な暗号化タイプは、どこでその塩を取得するかを知る必要があります。 // 定数の既知の塩値がある場合は、$csp_salt_staticに定義する必要があります。 // そうでない場合は、その値を空にして、$csp_salt_queryの値を定義してください。 // // パスワードを暗号化するために塩が必要ない場合は、両方の値を空にしてください。 // // クエリは、現在のユーザーのパスワードの塩値を返す必要があります。 // このクエリは、$csp_salt_staticが空でない限り無視されます。 // // %1はこのクエリで完全なユーザー名に置き換えられます // (ドメインを含む)、例えば"[email protected]" // %2はこのクエリでユーザー名(ドメイン部分なし)に置き換えられます // 例えば"jose" // %3はこのクエリでドメイン名に置き換えられます、 // 例えば"example.com" // //$csp_salt_static = 'LEFT(crypt_password, 2)'; //$csp_salt_static = '"a4"'; // MYSQLENCRYPTでこの形式を使用 //$csp_salt_static = '$2$blowsomefish$'; // PHPCRYPTでこの形式を使用 //$csp_salt_static = ''; $csp_salt_static = 'LEFT(password, 2)'; //$csp_salt_query = 'SELECT SUBSTRING_INDEX(crypt_password, '$', 1) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT SUBSTRING(crypt_password, (LENGTH(SUBSTRING_INDEX(crypt_password, '$', 2)) + 2)) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; //$csp_salt_query = ''; // csp_secure_port // // パスワード変更中にSSL暗号化が使用されることを確認するには、 // HTTPSが提供されるポート(通常は443)に設定してください。 // ユーザーがパスワードを変更するときにHTTPS接続を強制したくない場合は、 // ゼロに設定してください。 // // 特定のドメイン、ユーザー、またはサービスレベルに対して、この値をオーバーライドすることができます。 // Virtual Host Login(vlogin)プラグインを使用して、 // vlogin設定で$vlogin_csp_secure_portの値を設定することによって。 // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // 標準HTTPウェブリクエストを非標準の // ポート(ポート80以外)で提供する場合は、 // そのポート番号をここに指定する必要があります。 // そうでない場合はゼロに設定してください。 // // 特定のドメイン、ユーザー、またはサービスレベルに対して、この値をオーバーライドすることができます。 // Virtual Host Login(vlogin)プラグインを使用して、 // vlogin設定で$vlogin_csp_non_standard_http_portの値を設定することによって。 // //$csp_non_standard_http_port = 8080; $csp_non_standard_http_port = 0; // min_password_length // max_password_length // include_digit_in_password // include_uppercase_letter_in_password // include_lowercase_letter_in_password // include_nonalphanumeric_in_password // // 受け入れる最小および最大のパスワード長を設定することができます。 // または、ゼロのままにして制限を適用しないことを示します。 // // 他の設定をオンにして、新しいパスワードに少なくとも1つの数字、大文字、小文字、 // および/または1つの非英数字の文字が含まれていることを確認できます。 // $min_password_length = 6; $max_password_length = 0; $include_digit_in_password = 0; $include_uppercase_letter_in_password = 0; $include_lowercase_letter_in_password = 0; $include_nonalphanumeric_in_password = 0; // csp_delimiter // // システムにユーザー名が「@」以外のもので // ユーザーとドメイン部分を区切る場合は、 // その文字をここに指定してください。 // //$csp_delimiter = '|'; $csp_delimiter = '@'; // debug mode // $csp_debug = 0; ?> |

Change SQL Passwordプラグインは、次のようにインストールするCompatibilityプラグインにも依存しています:

cd /usr/share/squirrelmail/plugins  
wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcompatibility-2.0.16-1.0.tar.gz  
tar xvfz compatibility-2.0.16-1.0.tar.gz

次に、SquirrelMailの設定に移動し、SquirrelMailにCourierをPOP3およびIMAPサーバーとして使用していることを伝え、Change SQL PasswordおよびCompatibilityプラグインを有効にします:

/usr/share/squirrelmail/config/conf.pl

次のメニューが表示されます。指示に従ってナビゲートします:

SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Main Menu --  
1.  Organization Preferences  
2.  Server Settings  
3.  Folder Defaults  
4.  General Options  
5.  Themes  
6.  Address Books  
7.  Message of the Day (MOTD)  
8.  Plugins  
9.  Database  
10. Languages  
  
D.  Set pre-defined settings for specific IMAP servers  
  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- D  
  
  
SquirrelMail Configuration : Read: config.php  
---------------------------------------------------------  
While we have been building SquirrelMail, we have discovered some  
preferences that work better with some servers that don't work so  
well with others.  If you select your IMAP server, this option will  
set some pre-defined settings for that server.  
  
Please note that you will still need to go through and make sure  
everything is correct.  This does not change everything.  There are  
only a few settings that this will change.  
  
Please select your IMAP server:  
    bincimap    = Binc IMAP server  
    courier     = Courier IMAP server  
    cyrus       = Cyrus IMAP server  
    dovecot     = Dovecot Secure IMAP server  
    exchange    = Microsoft Exchange IMAP server  
    hmailserver = hMailServer  
    macosx      = Mac OS X Mailserver  
    mercury32   = Mercury/32  
    uw          = University of Washington's IMAP server  
    gmail       = IMAP access to Google mail (Gmail) accounts  
  
    quit        = Do not change anything  
Command >> <-- courier  
  
  
              imap_server_type = courier  
         default_folder_prefix = INBOX.  
                  trash_folder = Trash  
                   sent_folder = Sent  
                  draft_folder = Drafts  
            show_prefix_option = false  
          default_sub_of_inbox = false  
show_contain_subfolders_option = false  
            optional_delimiter = .  
                 delete_folder = true  
  
Press any key to continue... <-- press some key  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Main Menu --  
1.  Organization Preferences  
2.  Server Settings  
3.  Folder Defaults  
4.  General Options  
5.  Themes  
6.  Address Books  
7.  Message of the Day (MOTD)  
8.  Plugins  
9.  Database  
10. Languages  
  
D.  Set pre-defined settings for specific IMAP servers  
  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- 8  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Plugins  
  Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
  
  Available Plugins:  
    4. administrator  
    5. bug_report  
    6. calendar  
    7. change_sqlpass  
    8. compatibility  
    9. filters  
    10. fortune  
    11. info  
    12. listcommands  
    13. mail_fetch  
    14. message_details  
    15. sent_subfolders  
    16. spamcop  
    17. test  
    18. translate  
  
R   Return to Main Menu  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- 8 (または互換性プラグインの番号 - change_sqlpassプラグインに必要です)  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Plugins  
  Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. compatibility  
  
  Available Plugins:  
    5. administrator  
    6. bug_report  
    7. calendar  
    8. change_sqlpass  
    9. filters  
    10. fortune  
    11. info  
    12. listcommands  
    13. mail_fetch  
    14. message_details  
    15. sent_subfolders  
    16. spamcop  
    17. test  
    18. translate  
  
R   Return to Main Menu  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- 8 (change_sqlpassプラグインの番号)  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Plugins  
  Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. compatibility  
    5. change_sqlpass  
  
  Available Plugins:  
    6. administrator  
    7. bug_report  
    8. calendar  
    9. filters  
    10. fortune  
    11. info  
    12. listcommands  
    13. mail_fetch  
    14. message_details  
    15. sent_subfolders  
    16. spamcop  
    17. test  
    18. translate  
  
R   Return to Main Menu  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- S  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Plugins  
  Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. compatibility  
    5. change_sqlpass  
  
  Available Plugins:  
    6. administrator  
    7. bug_report  
    8. calendar  
    9. filters  
    10. fortune  
    11. info  
    12. listcommands  
    13. mail_fetch  
    14. message_details  
    15. sent_subfolders  
    16. spamcop  
    17. test  
    18. translate  
  
R   Return to Main Menu  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- S  
  
データがconfig.phpに保存されました。
続行するにはEnterを押してください... <-- ENTER  
  
  
SquirrelMail Configuration : Read: config.php (1.4.0)  
---------------------------------------------------------  
Plugins  
  Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. compatibility  
    5. change_sqlpass  
  
  Available Plugins:  
    6. administrator  
    7. bug_report  
    8. calendar  
    9. filters  
    10. fortune  
    11. info  
    12. listcommands  
    13. mail_fetch  
    14. message_details  
    15. sent_subfolders  
    16. spamcop  
    17. test  
    18. translate  
  
R   Return to Main Menu  
C   Turn color off  
S   Save data  
Q   Quit  
  
Command >> <-- Q

最後に、/etc/squirrelmail/config_local.phpファイルを修正し、$default_folder_prefix変数をコメントアウトする必要があります。これを行わないと、SquirrelMailにログインした後に次のエラーメッセージが表示されます: Query: CREATE “Sent” Reason Given: Invalid mailbox name.

vi /etc/squirrelmail/config_local.php

| |

これで、ブラウザでhttp://server1.example.com/webmailまたはhttp://192.168.0.110/webmailにアクセスしてSquirrelMailにアクセスできます。

メールアドレス(例: [email protected])とパスワードでログインします:

受信トレイにウェルカムメールが見つかるはずです:

パスワードを変更するには、[オプション]に移動し、[パスワードの変更]を選択します:

現在のパスワードを入力し、新しいパスワードを2回入力します:

パスワードを変更した後は、新しいパスワードで再度ログインする必要があります:

19 VMA (仮想メール管理インターフェース)

Virtual Mail Admin (VMA)は、このガイドで設定したメールシステムを管理するために書かれた小さなPHPベースのウェブアプリです。私はテストしていませんが、共有したいと思いました。

開発者(Charl Loubser)が私にメールで書いた内容は次のとおりです:

“こんにちは、
私はこれが好きかどうかわからないし、あなたにとって役に立つかどうかわからないが、共有したいと思った。
私はあなたが行ったセットアップのために、ちょっとしたウェブアプリを書きました: https://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu-10.04
もしあなたが承認し、あなたのチュートリアルで共有する価値があると思うなら、どうぞ、自由にそうしてください。
READMEに記載されているように、これは完璧なアプリではありませんが、今のところは機能しますし、閉じた環境(サーバー間のLANセットアップ)では比較的安全だと思います。
アプリのrarファイルは添付されていますが、次のURLからもダウンロードできます: http://code.google.com/p/vma/

20 参考文献

チュートリアル: Debian-SargeとPostfix 2.1を使用したISPスタイルのメールサービス: http://workaround.org/articles/ispmail-sarge/

Postfix + Quota: http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17

saslauthdを使用して暗号化されたメールパスワード: http://www.syscp.de/docs/public/contrib/cryptedmailpws

21 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。