メール管理 · 5 min read · Jan 14, 2026
Postfix、Courier、MySQL、および SquirrelMail を使用した仮想ユーザーとドメイン (Ubuntu 12.04 LTS) - ページ 5
15 SquirrelMail のインストール
SquirrelMail は、ユーザーがブラウザでメールを送受信できるウェブメールインターフェースです。この章では、SquirrelMail をインストールし、ユーザーが SquirrelMail インターフェースからメールアカウントのパスワードを変更できるように設定を調整する方法を示します。
SquirrelMail をインストールするには、次のコマンドを実行します:
apt-get install squirrelmail squirrelmail-compatibility php-pear php-db次に、SquirrelMail パッケージに付属する Apache 設定を /etc/apache2/conf.d ディレクトリにシンボリックリンクし、Apache を再起動します:
ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf
/etc/init.d/apache2 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 は同じ値になります。 // //$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 はすべてのクエリで新しいパスワードの暗号化されていないプレーンテキストに置き換えられます。 // $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 列) を返す必要があります。 // ユーザーがパスワードを変更する必要がない場合は 0 を、今すぐ変更する必要がある場合は 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 に値を定義します。 // // パスワードを暗号化するために塩を必要としない場合は、両方の値を空のままにしてください。 // // クエリは 1 つの値 (1 行、1 列) を返す必要があり、これは現在のユーザーのパスワードの塩値です。このクエリは $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 接続を強制したくない場合は、0 に設定します。 // // この値は、特定のドメイン、ユーザー、またはサービスレベルに対して Virtual Host Login (vlogin) プラグインを通じて上書きできます。 // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // 標準 HTTP ウェブリクエストを非標準ポート (ポート 80 以外) で提供する場合は、そのポート番号をここに指定する必要があります。それ以外の場合は 0 に設定します。 // // この値は、特定のドメイン、ユーザー、またはサービスレベルに対して Virtual Host Login (vlogin) プラグインを通じて上書きできます。 // //$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 に Courier を POP3 および IMAP サーバーとして使用していることを伝え、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 サーバーを選択してください:
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 enter to continue… <– press ENTER
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
データが config.php に保存されました
続行するには Enter を押してください… <– 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]) とパスワードでログインします:

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


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

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

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

16 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 ファイルは添付されていますが、次の場所からもダウンロードできます: http://code.google.com/p/vma/ “*
17 参考文献
- チュートリアル: 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
18 リンク
- Postfix MTA: http://www.postfix.org/
- Postfix Quota Patch: http://web.onda.com.br/nadal/
- phpMyAdmin: http://www.phpmyadmin.net/
- SquirrelMail: http://www.squirrelmail.org/
- Ubuntu: http://www.ubuntu.com/
- Virtual Mail Admin Interface (VMA): http://code.google.com/p/vma/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。