ÔÚRHEL 4 ÉÏÅäÖÃÈ«¹¦ÄܵÄPostfix ·þÎñÆ÷
³ö´¦£ºChinaUnix ×÷Õߣºanthonyfeng ʱ¼ä£º2006-1-12 15:07:00
ÔÚRHEL 4 ÉÏÅäÖÃÈ«¹¦ÄܵÄPostfix ·þÎñÆ÷
Îĵµ°æ±¾£º0.2
ÎĵµÈÕÖ¾£º
2005-12-17 ÖÁ 12-20 ³õ¸åÍê³É£¬Ê״ι«¿ª
×÷ÕߣºTony Feng
Óʼþ£ºtonyfeng@yahoo.com
¼ò½é
±¾ÎĽ²ÊöÔÚ°²×°ÁËRedhat Enterprice AS 4 U2µÄPCÉÏ£¬ÅäÖÃһ̨PostfixÓʼþ·þÎñÆ÷µÄ¹ý³Ì¡£ÊµÏÖÐéÄâÓò¡¢ÐéÄâÓû§¡¢POP3¡¢POP3S¡¢SMTP¡¢SMTPS¡¢IMAP¡¢IMAPS¡¢·À¶¾¡¢·ÀSPAM¡¢ÍøÒ³Óʼþ¹¦ÄÜ¡£
Éæ¼°µÄÈí¼þ
1. Redhat Enterprice AS 4 U2
2. Mysqlϵͳ×Ô´øÓÃÓÚ´æ´¢ÐéÄâÓò¡¢ÐéÄâÓû§µÈÐÅÏ¢¡£
3. Apacheϵͳ×Ô´øÔËÐÐÍøÒ³ÓʼþSquirrelMailºÍPostfixAdminʱʹÓá£
4. PHPϵͳ×Ô´øÔËÐÐÍøÒ³ÓʼþSquirrelMailºÍPostfixAdminʱʹÓá£
5. Cyrus-saslϵͳ×Ô´øÊµÏÖ´øÑéÖ¤µÄSMTPʱʹÓá£
6. Courier authentication library´Óhttp://www.courier-mta.org/ ÏÂÔØÊµÏÖ´øÑéÖ¤µÄSMTPʱʹÓá£
7. Postfix´Óhttp://postfix.org ÏÂÔØÒ»¸öMTA£¬ËäÈ»RHEL 4 ×Ô´øPostfix£¬µ«ÒòΪÆä²»Ö§³ÖSSL¼°Mysql£¬ËùÒÔÎÒÃÇÐèÒª×ÔÐбàÒë¡£
8. PostfixAdmin´Óhttp://postfixadmin.com/ ÏÂÔØÐéÄâÓò¡¢ÐéÄâÓû§µÈÐÅÏ¢ÊÇ·ÅÔÚMysqlÄڵ쬰²×°PostfixAdminºó£¬¾Í¿ÉÒÔÓÃä¯ÀÀÆ÷¹ÜÀíÕâЩÐÅÏ¢¡£
9. SquirrelMailϵͳ×Ô´øÒ»¸ö»ùÓÚIMAPµÄWebmail¿Í»§¶Ë¡£
10. Dovecotϵͳ×Ô´øÌṩPOP3£¬POP3S£¬IMAP£¬IMAPS¹¦ÄÜ¡£
11. F-prot´Óhttp://www.f-prot.com ÏÂÔØ£¬Linux workstation °æ¸öÈËʹÓÃÊÇÃâ·ÑµÄ
Ìṩɱ¶¾¹¦ÄÜ£¬¾ÝÎÅËٶȺͲ¡¶¾¿â±È¿ªÔ´µÄClamavºÃ¡£
12. SpamAssassinϵͳ×Ô´øÌṩ¹ýÂËÀ¬»øÓʼþ¹¦ÄÜ¡£
13. MailScanner
´Óhttp://www.sng.ecs.soton.ac.uk/mailscanner/ ÏÂÔØ
Postfix ÊÇʹÓÃMailScanner µ÷ÓÃf-prot ÓëSpamAssassin£¬»òÕ߯äËüµ÷Ó÷½·¨Ð§ÂʸüºÃ£¬µ«MailScannerÅäÖñȽÏÖ±¹Û£¬ÇÒ×î½üÄÃÁËÒ»¸ö´ó½± http://www.linuxawards.co.uk/content/view/26/42/ ¡£
ÅäÖùý³Ì
1£® »ù±¾Èí¼þ°²×°
°²×°RHEL 4 U2£¬Ê¹ÓÃĬÈϰ²×°£¬ÓïϵΪ¼òÌåÖÐÎÄ¡£¹Ø±ÕSE Linux£¬ÅäÖÃÍø¿¨£¬Ê¹ÆäÄÜ·ÃÎÊInternet¡£½øÈëX window£¬¿ªÊ¼->ϵͳÉèÖÃ->Ìí¼Ó/ɾ³ýÓ¦ÓóÌÐò£¬°²×°ÉÏÎÄÖÐÌá¼°¡°ÏµÍ³×Ô´ø¡±µÄÈí¼þ£¬°üÀ¨£º
ÍòÎ¬Íø·þÎñÆ÷£ºmysql & php Ïà¹ØµÄ
Óʼþ·þÎñÆ÷£ºSquirrelMail perl-cyrus
SQL Êý¾Ý¿â£ºÈ«²¿¡£
ÏÂÔØÆäËüÐèÒªµÄÈí¼þ¡£
2£® ÅäÖÃPostfixAdmin¡¢Mysql¡¢Apache
[root@localhost tmp]# tar xzf postfixadmin-2.1.0.tgz
[root@localhost tmp]# mv postfixadmin-2.1.0 /var/www/html/pa
[root@localhost tmp]# service mysqld start
[root@localhost tmp]# mysql -uroot < /var/www/html/pa/DATABASE_MYSQL.TXT
[root@localhost tmp]# cp /var/www/html/pa/config.inc.php.sample /var/www/html/pa/config.inc.php
[root@localhost tmp]# service httpd start
´ò¿ªä¯ÀÀÆ÷·ÃÎÊ http://localhost/pa£¬È»ºó°´ÌáʾÔö¼ÓÁ½¸öÐéÄâÓòÃûd1.com ºÍ d2.com£¬Ôö¼ÓÁ½¸öÐéÄâÓû§a@d1.com£¬b@d2.com¡£
ÉèÖÃMysqlºÍApache×Ô¶¯Æô¶¯
[root@localhost tmp]# chkconfig --level 35 mysqld on
[root@localhost tmp]# chkconfig --level 35 httpd on
3£® ±àÒë¡¢ÅäÖÃPostfix
ÏÈɾ³ýsendmail
[root@localhost tmp]# rpm ¨Ce sendmail ¨Cnodeps
[root@localhost tmp]# groupadd postfix
[root@localhost tmp]# groupadd postdrop
[root@localhost tmp]#useradd postfix -g postfix -c "Postfix user" -d /dev/null -s /sbin/nologin
[root@localhost tmp]# tar xzf postfix-2.2.7.tar.gz
[root@localhost tmp]# cd postfix-2.2.7
[root@localhost postfix-2.2.7]# make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -lsasl2'
[root@localhost postfix-2.2.7]# make
[root@localhost postfix-2.2.7]# make install
×¢£º¡°make install¡±ÃüÁîºóµÄËùÓÐÎÊÌâ¶¼Ö±½ÓÇûسµ¼ü¼´¿É¡£
±à¼/etc/postfix/main.cf ΪÒÔÏÂÄÚÈÝ
#=====================BASE=========================
myhostname = mail.d1.com
mydomain = d1.com
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 192.168.1.0/24 127.0.0.0/8
inet_interfaces = all
#=====================Vritual Mailbox settings=========================
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:501
virtual_gid_maps = static:502
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#====================QUOTA========================
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
#====================SASL========================
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner=$myhostname ESMTP "Version not Available"
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
html_directory = no
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/local/man
daemon_directory = /usr/libexec/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
±à¼/etc/postfix/ mysql_virtual_alias_maps.cf ΪÒÔÏÂÄÚÈÝ
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
±à¼/etc/postfix/ mysql_virtual_domains_maps.cf ΪÒÔÏÂÄÚÈÝ
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
±à¼/etc/postfix/ mysql_virtual_mailbox_limit_maps.cf ΪÒÔÏÂÄÚÈÝ
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
±à¼/etc/postfix/ mysql_virtual_mailbox_maps.cf ΪÒÔÏÂÄÚÈÝ
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
4£® ÅäÖÃSMTP ÈÏÖ¤
±à¼ /usr/lib/sasl2/smtpd.conf ΪÒÔÏÂÄÚÈÝ
pwcheck_method: authdaemond
log_level: 3
mech_list: plain login
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
°²×°Courier authentication library
[root@localhost tmp]# tar jxf courier-authlib-0.58.tar.bz2
[root@localhost tmp]# cd courier-authlib-0.58
[root@localhost courier-authlib-0.58]# ./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
[root@localhost courier-authlib-0.58]# make
[root@localhost courier-authlib-0.58]# make install
[root@localhost courier-authlib-0.58]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
[root@localhost courier-authlib-0.58]# cp /usr/local/courier-authlib/etc/authdaemonrc.dist /usr/local/courier-authlib/etc/authdaemonrc
ÐÞ¸Ä/usr/local/courier-authlib/etc/authdaemonrc Îļþ
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
±à¼/usr/local/courier-authlib/etc/authmysqlrc ΪÒÔÏÂÄÚÈÝ£¬ÆäÖÐ501£¬502 Ϊpostfix Óû§µÄUIDºÍGID¡£
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '501'
MYSQL_GID_FIELD '502'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/spool/mail/',maildir)
MYSQL_MAILDIR_FIELD concat('/var/spool/mail/',maildir)
MYSQL_NAME_FIELD name
# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 35 courier-authlib on
ÊÖ¶¯Æô¶¯·þÎñ£º
# service courier-authlib start
´ËʱÄãÒѾӵÓÐһ̨´øÑéÖ¤µÄSMTP ·þÎñÆ÷£¬ÓÃOutlook ¡¢Foxmail²âÊÔһϰɣ¬Óû§Ãû²ÉÓÃusename@domainName.com ÐÎʽ¡£
5£® Ôö¼ÓSSL¹¦ÄÜ£¬ÅäÖÃSMTPS·þÎñ
ÔÚ/etc/postfix/main.cf Ôö¼ÓÒÔÏÂÄÚÈÝ
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Éú³ÉÖ¤Êé
# mkdir /etc/ssl
# cd /etc/ssl
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
ÖØÐÂÆô¶¯postfix
# postfix reload
ÕâʱSMTPS¹¦ÄÜÓ¦¸ÃÄÜÕý³£¹¤×÷ÁË¡£ÓÐÄÜÁ¦²âÊÔµÄÍøÓÑÃÇÇëÑéÖ¤Ò»ÏÂÕ⹦ÄÜ£¬ÒòΪʹÓÃSMTPS + Outlook ʱÓÐÒ»´íÎóÌáʾ¡£
6£® ÅäÖÃDovecot£¬Ôö¼ÓIMAP£¬IMAPS£¬POP3£¬POP3S¹¦ÄÜÓÉÓÚDovecot ÊÇϵͳ×Ô´øµÄ£¬ÅäÖÃÁ½¸öÎļþ£¬ÔÙÉú³ÉÖ¤Êé¾Í¿ÉÒÔÁË¡£
±à¼ /etc/dovecot.conf ΪÒÔÏÂÄÚÈÝ
base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
imap_listen = [::]
pop3_listen = [::]
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/imapd.pem
ssl_key_file = /etc/ssl/private/imapd.pem
ssl_parameters_file = /var/run/dovecot/ssl-parameters.dat
login_dir = /var/run/dovecot-login
login = imap
login = pop3
mbox_locks = fcntl
auth = default
auth_mechanisms = plain
auth_userdb = passwd
auth_user = root
default_mail_env = maildir:/var/spool/mail/%u/
auth_userdb = mysql /etc/dovecot-mysql.conf
auth_passdb = mysql /etc/dovecot-mysql.conf
first_valid_uid = 501
±à¼ /etc/dovecot-mysql.conf ΪÒÔÏÂÄÚÈÝ
db_host = localhost
db_port = 3306
db_unix_socket = /var/lib/mysql/mysql.sock
db = postfix
db_user = postfix
db_passwd = postfix
db_client_flags = 0
default_pass_scheme = PLAIN-MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 501 AS uid, 502 AS gid FROM mailbox WHERE username = '%u'
Éú³ÉÖ¤Êé
# mkdir /etc/ssl/certs
# mkdir /etc/ssl private
# cd /usr/share/doc/dovecot-0.99.11/
# sh mkcert.sh
Æô¶¯Dovecot ·þÎñ
# service dovecot start
# chkconfig --level 35 dovecot on
˳ÀûµÄ»°£¬´ËʱSMTP¡¢SMTPS¡¢POP3¡¢POP3SÒѾÅäÖÃÍê³É¡£
7£® ÅäÖÃSquirrelMailÍøÒ³ÓʼþºÜ¼òµ¥£¬ÓÃä¯ÀÀÆ÷·ÃÎÊ http://localhost/webmail
8£® ÅäÖÃɱ¶¾¡¢¹ýÂËSPAM¹¦ÄÜÈç¹ûÄã´òË㽫ɱ¶¾¡¢¹ýÂËSPAM¹¦Äܰ²ÅÅÔÚ¸÷¸ö¿Í»§¶Ë£¬ÒÔÏÂÊDz»±ØÒª²Ù×÷µÄ¡£
°²×°f-prot
´Óhttp://files.f-prot.com/files/linux-x86/fp-linux-ws.rpm ÏÂÔØ
# rpm -ivh fp-linux-ws.rpm
Æô¶¯SpamAssassin
# service spamassassin start
# chkconfig --level 35 spamassassin on
°²×°¡¢ÅäÖÃMailScanner
# tar xzf MailScanner-4.48.4-2.rpm.tar.gz
# cd MailScanner-4.48.4-2
# ./install.sh
ÐÞ¸Ä /etc/MailScanner/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 = f-prot
Always Include SpamAssassin Report = yes
Use SpamAssassin = yes
Required SpamAssassin Score = 4
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
SpamAssassin Install Prefix = /usr/bin
SpamAssassin Local Rules Dir = /etc/MailScanner
ÈÃPostfix µ÷ÓÃMailScanner£¬ÔÚ/etc/postfix/main.cf ¼ÓÈëÒÔÏÂÒ»ÐÐ
header_checks = regexp:/etc/postfix/header_checks
±à¼/etc/postfix/header_checks ΪÒÔÏÂÄÚÈÝ
/^Received:/ HOLD
ÐÞÕýȨÏÞ
# chown postfix.postfix /var/spool/MailScanner/incoming
# chown postfix.postfix /var/spool/MailScanner/quarantine
ÆôÓÃ
# postfix stop
# service MailScanner start
# chkconfig --level 35 MailScanner on
×¢£ºMailScanner »á×Ô¶¯Æô¶¯Postfix¡£
²âÊÔSpamAssassin
·¢Ò»·âÓʼþ´øÈçÏÂÄÚÈÝ£¬½ÓÊպ󣬱êÌâÓ¦¸Ã´øÓбê¼Ç£º
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
²âÊÔf-prot
Éý¼¶²¡¶¾¿â£º
# /usr/local/f-prot/tools/check-updates.pl
·ÃÎÊhttp://www.webmail.us/testvirus£¬ÉêÇë¼ÄÒ»·â´øvirus µÄÓʼþ¼Äµ½×Ô¼ºµÄÓÊÏä
9£® Èç¹ûÉÏÃæµÄ²Ù×÷˳Àû£¬Õû¸öÅäÖÃÍê³É
ÆäËü²¹³ä
ÔÚÓ¦ÓÃÔÚÉú²ú»·¾³Ç°£¬ÇëÖØÐ¼ì²é¸÷¸öÈí¼þµÄÅäÖÃÎļþ£¬½øÐÐÍêÕûµÄ²âÊÔ£¬Óз¢ÏÖÇëÁªÏµ±ÊÕߣ¬Ð»Ð»£¡
Ö÷Òª²Î¿¼Îĵµ
http://bbs.chinaunix.net/viewthread.php?tid=640481
http://anti-spam.org.cn/forums/index.php?s=7949d9143931cc4859230eaf3174e456&showtopic=3357&st=0