メール設定 · 4 min read · Dec 30, 2025
Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (Fedora 14 x86_64) - ページ 6
18 SquirrelMailのインストール
SquirrelMailは、ユーザーがブラウザでメールを送受信できるWebメールインターフェースです。この章では、SquirrelMailをインストールし、ユーザーがSquirrelMailインターフェースからメールアカウントのパスワードを変更できるように設定を調整する方法を示します。
SquirrelMailをインストールするには、次のコマンドを実行します:
yum install squirrelmail php-pear-DBその後、Apacheを再起動します:
/etc/init.d/httpd 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列)を返す必要があり、その値は理想的には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 // // ユーザーがパスワードを変更する必要があるかどうかを示すフラグをチェックするクエリです。このクエリは、ユーザーがパスワードを変更する必要がない場合は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 // // 受け入れる最小および最大パスワード長を設定するか、制限を適用しないことを示すためにそれらの設定を0のままにします。 // // 他の設定をオンにすると、新しいパスワードに少なくとも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; ?> |
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.100/webmailにアクセスしてSquirrelMailにアクセスできます。
メールアドレス(例: [email protected])とパスワードでログインします:

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


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

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

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

19 参考文献
チュートリアル: 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
20 リンク
- 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/
- Fedora: http://fedoraproject.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。