メール設定 · 4 min read · Nov 26, 2025

Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン (Fedora 13 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/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はこのクエリで完全なユーザー名(ドメインを含む)に置き換えられます。 // %2はこのクエリでユーザー名(ドメイン部分なし)に置き換えられます。 // %3はこのクエリでドメイン名に置き換えられます。 // %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はこのクエリで完全なユーザー名(ドメインを含む)に置き換えられます。 // %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; ?> |

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  
---------------------------------------------------------  
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 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  
  
Data saved in config.php  
Press enter to continue... <-- 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

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

20 リンク

Share: X/Twitter LinkedIn

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

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