メール設定 · 5 min read · Jan 16, 2026
Postfix、Courier、MySQL、および SquirrelMail を使用した仮想ユーザーとドメイン (Debian Squeeze) - ページ 5
15 SquirrelMail のインストール
SquirrelMail は、ユーザーがブラウザでメールを送受信できるウェブメールインターフェースです。この章では、SquirrelMail をインストールし、ユーザーが SquirrelMail インターフェースからメールアカウントのパスワードを変更できるように設定を調整する方法を示します。
SquirrelMail をインストールするには、次のコマンドを実行します:
apt-get install squirrelmail squirrelmail-compatibility php-pear php-db次に、SquirrelMail パッケージに付属する Apache 設定を /etc/apache2/conf.d ディレクトリにコピーし、Apache を再起動します:
cp /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf
/etc/init.d/apache2 restartSquirrelMail にはいくつかのプラグインがプリインストールされていますが、残念ながら、どれも 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 または 0 で、 // ユーザー/パスワードペアが実際にデータベースに存在することを示します。 // // %1 はこのクエリ内で完全なユーザー名に置き換えられます // (ドメインを含む)、例えば "[email protected]" // %2 はこのクエリ内でユーザー名(ドメイン部分を含まない)に置き換えられます // 例えば "jose" // %3 はこのクエリ内でドメイン名に置き換えられます、 // 例えば "example.com" // %4 はこのクエリ内で現在の(古い) // パスワードに置き換えられます(他のプラグイン設定に基づく暗号化形式に応じて) // %5 はこのクエリ内で現在の(古い) // パスワードの暗号化されていないプレーンテキストに置き換えられます。パスワード暗号化を使用しない場合、%4 と %5 は同じ値になりますが、%4 には二重引用符が付いており、%5 には付いていません。 // //$lookup_password_query = ''; // ひどいセキュリティ: $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 列)を返すべきで、 // ユーザーがパスワードを変更する必要がない場合はゼロ、 // ユーザーが今すぐ変更する必要がある場合は 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 の値を定義してください。 // // パスワードの塩が必要ない場合は、両方の値を空のままにしてください。 // // このクエリは一つの値(1 行、1 列)を返すべきで、 // 現在のユーザーのパスワードの塩の値です。このクエリは、$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 // // 標準でないポート(ポート 80 以外)で標準 HTTP ウェブリクエストを提供する場合は、 // そのポート番号をここに指定する必要があります。そうでない場合はゼロに設定します。 // // 特定のドメイン、ユーザー、またはサービスレベルに対してこの値をオーバーライドすることができます。 // 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 // // 受け入れる最小および最大パスワード長を設定するか、 // それらの設定をゼロのままにして、制限を適用しないことを示すことができます。 // // 他の設定を有効にすると、新しいパスワードに少なくとも一つの数字、大文字、小文字、 // および/または一つの非英数字が含まれているかどうかを確認します。 // $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 = '@'; // デバッグモード // $csp_debug = 0; ?> |
次に、SquirrelMail の設定に移動し、SquirrelMail に POP3 および IMAP サーバーとして Courier を使用していることを伝え、Change SQL Password および Compatibility プラグインを有効にする必要があります:
/usr/sbin/squirrelmail-configure次のメニューが表示されます。指示に従ってナビゲートしてください:
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 on
S Save data
Q Quit
Command >> <– D
SquirrelMail Configuration : Read: config.php
SquirrelMail を構築している間に、いくつかのサーバーでうまく機能するが、他のサーバーではあまりうまく機能しない設定を発見しました。
IMAP サーバーを選択すると、このオプションはそのサーバーのためのいくつかのプリ定義された設定を設定します。
すべてが正しいことを確認するために、まだ確認する必要があります。この設定はすべてを変更するわけではありません。
これによって変更される設定はほんのいくつかです。
IMAP サーバーを選択してください:
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 on
S Save data
Q Quit
Command >> <– 8
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Installed Plugins
1. view_as_html
Available Plugins:
2. administrator
3. bug_report
4. calendar
5. change_sqlpass
6. compatibility
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate
R Return to Main Menu
C Turn color on
S Save data
Q Quit
Command >> <– 6 (または互換性プラグインの番号 - change_sqlpass プラグインに必要です)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Installed Plugins
1. view_as_html
2. compatibility
Available Plugins:
3. administrator
4. bug_report
5. calendar
6. change_sqlpass
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate
R Return to Main Menu
C Turn color on
S Save data
Q Quit
Command >> <– 6 (change_sqlpass プラグインの番号)
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Installed Plugins
1. view_as_html
2. compatibility
3. change_sqlpass
Available Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate
R Return to Main Menu
C Turn color on
S Save data
Q Quit
Command >> <– S
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Installed Plugins
1. view_as_html
2. compatibility
3. change_sqlpass
Available Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate
R Return to Main Menu
C Turn color on
S Save data
Q Quit
Command >> S
Data saved in config.php
Press enter to continue… <– press ENTER
SquirrelMail Configuration : Read: config.php (1.4.0)
Plugins
Installed Plugins
1. view_as_html
2. compatibility
3. change_sqlpass
Available Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate
R Return to Main Menu
C Turn color on
S Save data
Q Quit
Command >> <– Q
これで、ブラウザに http://server1.example.com/squirrelmail または http://192.168.0.100/squirrelmail と入力して SquirrelMail にアクセスできます。
メールアドレス(例: [email protected])とパスワードでログインします:

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


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

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

パスワードが正常に変更された場合、次のエラーメッセージが表示されます。これは、古いパスワードがもうアクティブでないため、新しいパスワードで再度ログインする必要があることを意味します:

16 参考文献
- チュートリアル: 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
17 リンク
- Postfix MTA: http://www.postfix.org/
- Postfix Quota パッチ: http://web.onda.com.br/nadal/
- phpMyAdmin: http://www.phpmyadmin.net/
- SquirrelMail: http://www.squirrelmail.org/
- Debian: http://www.debian.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。