インストール手順 · 8 min read · Sep 28, 2025

Postfix、Courier、MySQL、および SquirrelMail を使用した仮想ユーザーとドメイン (Mandriva 2009.1 x86_64) - ページ 5

15 SquirrelMail のインストール

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

SquirrelMail をインストールするには、単に次のように入力します:

urpmi squirrelmail

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

cd /var/www/squirrelmail/plugins/  
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fchange_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 はすべてのクエリで完全なユーザー名 (ドメインを含む) に置き換えられます。 // %2 はすべてのクエリでユーザー名 (ドメイン部分を含まない) に置き換えられます。 // %3 はすべてのクエリでドメイン名に置き換えられます。 // %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 はこのクエリで完全なユーザー名 (ドメインを含む) に置き換えられます。 // %2 はこのクエリでユーザー名 (ドメイン部分を含まない) に置き換えられます。 // %3 はこのクエリでドメイン名に置き換えられます。 // //$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 はこのクエリで完全なユーザー名 (ドメインを含む) に置き換えられます。 // %2 はこのクエリでユーザー名 (ドメイン部分を含まない) に置き換えられます。 // %3 はこのクエリでドメイン名に置き換えられます。 // //$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 接続を強制したくない場合は、ゼロに設定します。 // // 特定のドメイン、ユーザー、またはサービスレベルに対してこの値をオーバーライドすることができます。 // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // 標準 HTTP ウェブリクエストを非標準ポート (ポート 80 以外) で提供する場合は、そのポート番号をここに指定する必要があります。そうでない場合はゼロに設定します。 // // 特定のドメイン、ユーザー、またはサービスレベルに対してこの値をオーバーライドすることができます。 // //$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 = '@'; // デバッグモード // $csp_debug = 0; ?> |

次に、SquirrelMail の設定に移動し、SquirrelMail に POP3 および IMAP サーバーとして Courier を使用することを伝えます (これを行わないと、SquirrelMail にログインしたときに次のようなエラーが表示される可能性があります:

ERROR: Could not complete request.  
Query: CREATE "Sent"  
Reason Given: Invalid mailbox name.

) そして、Change SQL Password プラグインを有効にし、他のパスワードプラグインを無効にします:

/var/www/squirrelmail/conf/conf.pl

次のメニューが表示されます。D を入力して IMAP/POP3 サーバーを変更します:

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  
---------------------------------------------------------  
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

quit = 何も変更しない
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

任意のキーを押して続行してください… <– 任意のキーを押す

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  
4. filters  
5. address_add  
6. change_pass  
7. quota_usage  
8. change_ldappass  
9. avelsieve  
10. windows  
11. folder_sizes  
12. archive_mail  
13. empty_folders
Available Plugins:  
14. abook_import_export  
15. administrator  
16. block_sender  
17. bookmarks  
18. bug_report  
19. calendar  
20. change_sqlpass  
21. compatibility  
22. demo  
23. fortune  
24. info  
25. junkfolder  
26. ldifimport  
27. listcommands  
28. login_image  
29. mail_fetch  
30. message_details  
31. rewrap  
32. secure_login  
33. select_range  
34. sent_subfolders  
35. spam_buttons  
36. spamassassin  
37. spamcop  
38. test  
39. translate  
40. username
R Return to Main Menu  
C Turn color off  
S Save data  
Q Quit

Command >> <– 21 (または、change_sqlpass プラグインに必要な互換性プラグインの番号)

SquirrelMail Configuration : Read: config.php (1.4.0)

Plugins
Installed Plugins

  1. delete_move_next
  2. squirrelspell
  3. newmail
  4. filters
  5. address_add
  6. change_pass
  7. quota_usage
  8. change_ldappass
  9. avelsieve
  10. windows
  11. folder_sizes
  12. archive_mail
  13. empty_folders
  14. compatibility
    Available Plugins:
  15. abook_import_export
  16. administrator
  17. block_sender
  18. bookmarks
  19. bug_report
  20. calendar
  21. change_sqlpass
  22. demo
  23. fortune
  24. info
  25. junkfolder
  26. ldifimport
  27. listcommands
  28. login_image
  29. mail_fetch
  30. message_details
  31. rewrap
  32. secure_login
  33. select_range
  34. sent_subfolders
  35. spam_buttons
  36. spamassassin
  37. spamcop
  38. test
  39. translate
  40. username
    R Return to Main Menu
    C Turn color off
    S Save data
    Q Quit
    
    Command >> <-- 21 (change_sqlpass プラグインの番号)
    
    SquirrelMail Configuration : Read: config.php (1.4.0)  
    ---------------------------------------------------------  
    Plugins  
    Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. filters  
    5. address_add  
    6. quota_usage  
    7. change_ldappass  
    8. avelsieve  
    9. windows  
    10. folder_sizes  
    11. archive_mail  
    12. empty_folders  
    13. compatibility  
    14. change_sqlpass
Available Plugins:  
15. abook_import_export  
16. administrator  
17. block_sender  
18. bookmarks  
19. bug_report  
20. calendar  
21. change_pass  
22. demo  
23. fortune  
24. info  
25. junkfolder  
26. ldifimport  
27. listcommands  
28. login_image  
29. mail_fetch  
30. message_details  
31. rewrap  
32. secure_login  
33. select_range  
34. sent_subfolders  
35. spam_buttons  
36. spamassassin  
37. spamcop  
38. test  
39. translate  
40. username
R Return to Main Menu  
C Turn color off  
S Save data  
Q Quit

Command >> <– 6 (change_pass プラグインの番号)

SquirrelMail Configuration : Read: config.php (1.4.0)

Plugins
Installed Plugins

  1. delete_move_next
  2. squirrelspell
  3. newmail
  4. filters
  5. address_add
  6. quota_usage
  7. change_ldappass
  8. avelsieve
  9. windows
  10. folder_sizes
  11. archive_mail
  12. empty_folders
  13. compatibility
  14. change_sqlpass
    Available Plugins:
  15. abook_import_export
  16. administrator
  17. block_sender
  18. bookmarks
  19. bug_report
  20. calendar
  21. change_pass
  22. demo
  23. fortune
  24. info
  25. junkfolder
  26. ldifimport
  27. listcommands
  28. login_image
  29. mail_fetch
  30. message_details
  31. rewrap
  32. secure_login
  33. select_range
  34. sent_subfolders
  35. spam_buttons
  36. spamassassin
  37. spamcop
  38. test
  39. translate
  40. username
    R Return to Main Menu
    C Turn color off
    S Save data
    Q Quit
    
    Command >> <-- 7 (change_ldappass プラグインの番号)
    
    SquirrelMail Configuration : Read: config.php (1.4.0)  
    ---------------------------------------------------------  
    Plugins  
    Installed Plugins  
    1. delete_move_next  
    2. squirrelspell  
    3. newmail  
    4. filters  
    5. address_add  
    6. quota_usage  
    7. avelsieve  
    8. windows  
    9. folder_sizes  
    10. archive_mail  
    11. empty_folders  
    12. compatibility  
    13. change_sqlpass
Available Plugins:  
14. abook_import_export  
15. administrator  
16. block_sender  
17. bookmarks  
18. bug_report  
19. calendar  
20. change_ldappass  
21. change_pass  
22. demo  
23. fortune  
24. info  
25. junkfolder  
26. ldifimport  
27. listcommands  
28. login_image  
29. mail_fetch  
30. message_details  
31. rewrap  
32. secure_login  
33. select_range  
34. sent_subfolders  
35. spam_buttons  
36. spamassassin  
37. spamcop  
38. test  
39. translate  
40. username
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. filters  
5. address_add  
6. quota_usage  
7. change_ldappass  
8. avelsieve  
9. windows  
10. folder_sizes  
11. archive_mail  
12. empty_folders  
13. compatibility  
14. change_sqlpass
Available Plugins:  
15. abook_import_export  
16. administrator  
17. block_sender  
18. bookmarks  
19. bug_report  
20. calendar  
21. change_ldappass  
22. change_pass  
23. demo  
24. fortune  
25. junkfolder  
26. ldifimport  
27. listcommands  
28. login_image  
29. mail_fetch  
30. message_details  
31. rewrap  
32. secure_login  
33. select_range  
34. sent_subfolders  
35. spam_buttons  
36. spamassassin  
37. spamcop  
38. test  
39. translate  
40. username
R Return to Main Menu  
C Turn color off  
S Save data  
Q Quit

Command >> <– Q

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

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

受信トレイにウェルカムメールが届いているはずです:

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

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

SquirrelMail は、パスワードが正常に変更されたかどうかを教えてくれます:

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

Mail Passwords Encrypted using saslauthd: http://www.syscp.de/docs/public/contrib/cryptedmailpws

17 リンク

Share: X/Twitter LinkedIn

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

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