설치 가이드 · 8 min read · Dec 30, 2025

가상 사용자 및 도메인 설정하기: Postfix, Courier, MySQL 및 SquirrelMail (Fedora 14 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/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 또는 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은 모든 쿼리에서 전체 사용자 이름(도메인 포함)으로 대체됩니다. 예: "[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 // // 사용자가 비밀번호를 변경해야 하는지 여부를 나타내는 플래그를 확인하는 쿼리입니다. 이 쿼리는 사용자가 비밀번호를 변경할 필요가 없는 경우 0을 반환하고, 변경해야 하는 경우 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에 값을 정의하십시오. // // 비밀번호를 암호화하는 데 소금이 필요하지 않거나 사용하지 않는 경우 두 값을 비워두십시오. // // 쿼리는 현재 사용자의 비밀번호에 대한 소금 값을 반환해야 합니다. $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 연결을 강제하고 싶지 않다면 0으로 설정하십시오. // // 특정 도메인, 사용자 또는 서비스 수준에 대해 Virtual Host Login(vlogin) 플러그인을 통해 이 값을 재정의할 수 있습니다. // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // 비표준 포트(포트 80이 아닌 포트)에서 표준 HTTP 웹 요청을 제공하는 경우 해당 포트 번호를 여기에서 지정해야 합니다. 그렇지 않으면 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으로 남겨두어 제한을 적용하지 않도록 할 수 있습니다. // // 다른 설정을 활성화하여 새 비밀번호에 최소한 하나의 숫자, 대문자, 소문자 및/또는 하나의 비알파벳 문자가 포함되어 있는지 확인할 수 있습니다. // $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이 POP3 및 IMAP 서버로 Courier를 사용하고 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  
  
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])와 비밀번호로 로그인합니다:

받은 편지함에서 환영 이메일을 찾을 수 있어야 합니다:

비밀번호를 변경하려면 옵션으로 이동한 다음 비밀번호 변경을 선택합니다:

현재 비밀번호와 새 비밀번호를 두 번 입력합니다:

비밀번호를 변경한 후에는 새 비밀번호로 즉시 다시 로그인해야 합니다:

19 참고문헌

튜토리얼: Debian-Sarge 및 Postfix 2.1을 사용한 ISP 스타일 이메일 서비스: http://workaround.org/articles/ispmail-sarge/

Postfix + 쿼터: http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17

메일 비밀번호를 saslauthd를 사용하여 암호화: http://www.syscp.de/docs/public/contrib/cryptedmailpws

20 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.