1¡¢¸ÅÊö
1.1¡¢ÏµÍ³Ä¿±ê
¡¡¡¡MaildirÓʼþ´æ´¢¸ñʽ
¡¡¡¡smtpÈÏÖ¤
¡¡¡¡ÓʼþµØÖ·ºÍϵͳÕʺŷֿª
¡¡¡¡¶àÓòÖ§³Ö
¡¡¡¡web¹ÜÀíÕʺš¢±ðÃû¡¢ÓòµÈ×ÊÁÏ
¡¡¡¡pop3/imapÖ§³Ö
webmailÖ§³Ö
¡¡¡¡¼¯³ÉmysqlÊý¾Ý¿â
¡¡¡¡¼¯³ÉÀ¬»øÓʼþ¹ýÂË
¡¡¡¡¼¯³É·À²¡¶¾
1.2¡¢TODO
1.3¡¢ÏµÍ³¼Ü¹¹
¡¡¡¡+---------------------------------------------------+
¡¡¡¡| |
¡¡¡¡| 25/25 25/25 110/993 143/995 80/443 |
¡¡¡¡| Incoming Outgoing POP3 IMAP WEB-MAIL |
¡¡¡¡| /\ /\ /\ /\ /\ |
¡¡¡¡| || || || || || |
¡¡¡¡| \/ \/ \/ \/ \/ |
¡¡¡¡+-------------------+---------------+---------------+
¡¡¡¡| Postfix | | Squirrelmail |
¡¡¡¡| | +---------------+
¡¡¡¡| | Courier-imap |
¡¡¡¡| |-------------------------------+
¡¡¡¡| | Courier-authlib |
¡¡¡¡|-------------------+-------------------------------|
¡¡¡¡| Cyrus-SASL |
¡¡¡¡|---------------------------------------------------+
¡¡¡¡| MySQL |
¡¡¡¡+---------------------------------------------------+
2¡¢Èí¼þ°üµÄ°²×°
sarge:#apt-get install postfix postfix-tls postfix-mysql libsasl2 libsasl2-modules libsasl2-modules-sql courier-base courier-pop courier-imap courier-authdaemon courier-authmysql mysql-server-4.1 mysql-client-4.1 apache php4 php4-mysql squirrelmail squirrelmail-locales php4-pear imapproxy
3¡¢ÅäÖÃ
3.1¡¢apache
ÐÞ¸Ä/etc/apache/httpd.conf¼ÓÈëPHP4Ö§³Ö
# And for PHP 4.x, use:
#
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
sarge:#/etc/init.d/apache restart #ÖØÆôapache
sarge:#l# netstat -ln|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
3.2¡¢mysql
sarge:#wget http://high5.net/page7_files/postfixadmin-2.1.0.tgz
sarge:#tar zxvf postfixadmin-2.1.0.tgz -C /var/www/
sarge:#ln -s /var/www/postfixadmin-2.1.0 /var/www/postfix
sarge:#mysql < /var/www/postfix/DATABASE_MYSQL.TXT ¡¡
sarge:#cp /var/www/postfix/config.inc.php.sample /var/www/postfix/config.inc.php
¿ÉÒÔÐÞ¸Äconfig.inc.phpÖеÄÏà¹Ø²ÎÊýÒÔ·ûºÏÄãµÄÐèÇó,ÕâÀïÔÚmysqlÀï´æ·ÅÃÜÂëÓÃÃ÷·½Ê½£¬$CONF['encrypt'] = 'cleartext';
ÓÃä¯ÀÀÆ÷´ò¿ªhttp://sargeIP/postfix/ µãsetup£¬Ò»°ãÇé¿öϲ»»áÓÐʲôÎÊÌâ¡£°´ÕÕÌáʾ£¬É¾³ýsetup.phpÎļþ
sarge:#rm /var/www/postfix/setup.php
sarge:#/etc/init.d/mysql restart
sarge:# netstat -ln|grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
sarge# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 245 to server version: 4.1.11-Debian_4sarge7-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> grant select,insert,update,delete,create,drop on postfix.* to 'postfix'@'127.0.0.1' IDENTIFIED BY 'postfix';
Query OK, 0 rows affected (0.00 sec)
mysql>
Ìí¼ÓpostfixÕÊ»§£¬ÃÜÂëΪpostfix,ʵ¼ÊÓ¦ÓÃʱ¸ü¸Ä³ÉÒ»¸öºÏÀíµÄÃÜÂ룬¸ÃÓû§Ö»ÄÜ´Ó127.0.0.1Á¬½Ómysql·þÎñÆ÷¡£¡¡
3.3¡¢postfix
ÐÞ¸Ä/etc/postfix/main.cf,Ìí¼ÓÏÂÃæµÄÄÚÈÝ
#=============sasl2====================#
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = test.com
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_client_restrictions = permit_sasl_authenticated,
reject_invalid_hostname,
# reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client relays.ordb.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dul.dnsbl.sorbs.net,
permit
smtpd_data_restrictions =
reject_unauth_pipelining,
permit
#=================mysql================#
virtual_transport = virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_mailbox_domains.cf
virtual_mailbox_base = /var/mailbox/
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_mailbox_maps.cf
virtual_minimum_uid = 33
virtual_uid_maps = static:33
virtual_gid_maps = static:33
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql_alias_maps.cf
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost =
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
sarge:#mkdir /etc/postfix/mysql
sarge:#vi /etc/postfix/mysql/mysql_mailbox_domains.cf
hosts = 127.0.0.1
user = postfix
password = postfix
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active='1'
sarge:#vi /etc/postfix/mysql/mysql_mailbox_maps.cf
hosts = 127.0.0.1
user = postfix
password = postfix
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
additional_conditions = and active='1'
sarge:#vi /etc/postfix/mysql/mysql_alias_maps.cf
hosts = 127.0.0.1
user = postfix
password = postfix
dbname = postfix
table = alias
select_field = goto
where_field = address
additional_conditions = and active='1'
sarge:#vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
mech_list: plain login digest-md5 cram-md5
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username='%u@%r' and domain='%r'and active='1'
¹ØÓÚsmtpd.conf ¸ü¶àµÄ²ÎÊý¿É²Î¼ûhttp://www.clusting.com/cyrus/SASL/doc/options.html
sarge:#/etc/init.d/postfix restart
sarge:# netstat -ln|grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp6 0 0 :::25 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 14125 private/relay
´ò¿ªhttp://sarge_ip/postfix,¶Ôpostfixadmin×öÒ»·¬³õʼ»¯ºó
Ìí¼ÓÒ»¸öÓò£ºtest.com #ʵ¼ÊÓ¦ÓÃÌí¼ÓÄãʵ¼ÊµÄÓòÃû
Ìí¼ÓÒ»¸öÕÊ»§£ºadmin@test.com #ÃÜÂëÊÇadmin,ʵ¼ÊÓ¦ÓÃʱ£¬ÃÜÂë²»ÒªºÍÓû§ÃûÖØ¸´¡£
sarge:#mkdir /var/mailbox #ÓʼþÕÊ»§´æ·ÅÓʼþµÄµØ·½
sarge:#chown -R 33:33 /var/mailbox #apacheµÄÔËÐÐÕÊ»§£¬ÕâÀïÒªºÍmain.cfºÍapache É趨һÖ¡£
sarge:#telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 sarge ESMTP Postfix (Debian/GNU)
ehlo sarge
250-sarge
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 8BITMIME
mail from:"This is a test mail!"<admin@test.com>
250 Ok
rcpt to:<admin@test.com>
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is a test mail.
.
250 Ok: queued as 39578C143
quit
221 Bye
Connection closed by foreign host.
ÏÖÔÚ¾ÍÓ¦¸ÃÓÐ/var/mailbox/admin@test.com/Õâ¸öĿ¼ÁË
sarge:#more /var/mailbox/admin@test.com/new/1170923510.V802I40b7.sarge
Return-Path: <admin@test.com>
X-Original-To: admin@test.com
Delivered-To: admin@test.com
Received: from sarge (localhost.localdomain [127.0.0.1])
by sarge (Postfix) with ESMTP id 39578C143
for <admin@test.com>; Thu, 8 Feb 2007 16:27:16 +0800 (CST)
Message-Id: <20070208082716.39578C143@sarge>
Date: Thu, 8 Feb 2007 16:27:16 +0800 (CST)
From: admin@test.com
To: undisclosed-recipients:;
This is a test mail.
3.4¡¢courier
sarge:#vi /etc/courier/authdaemonrc
×îÖ÷ÒªÊÇÏÂÃæÕâ¸ö²ÎÊý
authmodulelist="authmysql"
sarge:#vi /etc/courier/authmysqlrc
ÄÚÈÝΪ
MYSQL_SERVER 127.0.0.1
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_LOGIN_FIELD username
MYSQL_CLEAR_PWFIELD password
#MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '33'
MYSQL_GID_FIELD '33'
MYSQL_HOME_FIELD '/var/mailbox/'
MYSQL_MAILDIR_FIELD maildir
#MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(username,'@',-1),'/',SUBSTRING_INDEX
(username,'@',1),'/')
MYSQL_NAME_FIELD name
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active='1'
sarge:#/etc/init.d/courier-authdaemon restart
sarge:#/etc/init.d/courier-imap restart
sarge:#/etc/init.d/courier-pop restart
×¢ÒâMYSQL_CLEAR_PWFIELD password ÓÃÃ÷ÎÄ·½Ê½È¥×¥mysqlÖеÄÓû§ÃÜÂ룬ºÍpostfixadminµÄconfig.inc.phpÖеÄÉèÖÃÒ»Ö¡£
ÖØµã×¢Ò⣺Èç¹ûÏëÔÚmysqlÖдæ·ÅµÄÓû§Îªmd5crypt·½Ê½£¬¶ø²»ÊÇÃ÷ÎÄ£¬ÄÇôpostfixadminµÄconfig.inc.php ÖеIJÎÊýÒª¸Ä»Ø$CONF['encrypt'] = 'md5crypt';authmysqlrcÅäÖÃÎļþÖеÄMYSQL_CLEAR_PWFIELD passwordÒª»»³ÉMYSQL_CRYPT_PWFIELD password,ÏÈǰ½¨Á¢ºÃµÄÕÊ»§±ØÐë¸üÐÂÃÜÂë¡£smtpd.confÖÐÌí¼Ópassword_format: crypt ¡£¾¡¹ÜÕâÑù£¬imapºÍpop3ÈÏÖ¤¿ÉÒÔͨ¹ý£¬smtp·¢ÐÅʱ£¬smtp·þÎñÆ÷²»ÄÜͨ¹ý£¬ÐèÒª¸øcyrus-sasl´ò¸öpatch¡£Ïà¹Ø×ÊÁÏÇë²Î¿¼http://blog.matroid.org/display/26
smtp·þÎñ£¬³ýÁËÉÏÎÄʹÓõÄÈÏÖ¤·½Ê½Ö®Í⣬³£ÓõϹÓÐsaslauthd and PAM¡£
3.5¡¢mailscanner
sarge:#wget http://www.mailscanner.info/files/4/tar/MailScanner-install-4.54.6-1.tar.gz
sarge:#wget http://www.mailscanner.info/files/4/install-Clam-SA.tar.gz #ClamAV 0.88.2 and SpamAssassin 3.1.3 easy installation package
sarge:#tar zxvf MailScanner-install-4.54.6-1.tar.gz -C /tmp
sarge:#cd /tmp/MailScanner-install-4.54.6-1/
sarge:#./install.sh
sarge:#export EDITOR=vi #ĬÈÏ±à¼Æ÷ʹÓÃvi,Ò²¿ÉÒÔÖ±½ÓдÈë/etc/profile or $HOME/.profile,È»ºósource /etc/profile or source $HOME/.profile
sarge:#crontab -e
37 5 * * * /opt/MailScanner/bin/update_phishing_sites
58 23 * * * /opt/MailScanner/bin/clean.quarantine
42 * * * * /opt/MailScanner/bin/update_virus_scanners
3,23,43 * * * * /opt/MailScanner/bin/check_mailscanner
sarge:#tar zxvf install-Clam-SA.tar.gz -C /tmp
sarge:#cd /tmp/install-Clam-SA
sarge:#./install.sh #°²×°clamav and SpamAssassin
ÐÞ¸Ä/opt/MailScanner/etc/MailScanner.conf£º
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanners = clamav
Use SpamAssassin = yes
sarge:#chown postfix:postfix /var/spool/MailScanner/incoming
sarge:#chown postfix:postfix /var/spool/MailScanner/quarantine
ÐÞ¸Ä/etc/postfix/main.cf:
#=============mailscanner===============#
header_checks = regexp:/etc/postfix/header_checks
н¨/etc/postfix/header_checks:
/^Received:/ HOLD
sarge:#vi /etc/init.d/MailScanner
case $1 in
start)
/opt/MailScanner/bin/check_mailscanner
[ $? -eq 0 ] && echo "mailscanner start successful"
;;
stop)
;;
esac
sarge:#ln -s /etc/init.d/MailScanner /etc/rc2.d/S19MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc3.d/S19MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc4.d/S19MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc5.d/S19MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc0.d/K81MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc1.d/K81MailScanner
sarge:#ln -s /etc/init.d/MailScanner /etc/rc6.d/K81MailScanner
sarge:#/etc/init.d/postfix restart
sarge:#/etc/init.d/MailScanner start
3.6¡¢webmail
sarge:#/usr/sbin/squirrelmail-configure #¸ù¾ÝÄãµÄ¾ßÌåÇé¿öÅäÖÃÒ»ÏÂ
sarge:#ln -s /usr/share/squirrelmail /var/www/webmail