linux 下建立开源的extmail51CTO博客 - 众发娱乐

linux 下建立开源的extmail51CTO博客

2019年03月29日11时53分17秒 | 作者: 亦巧 | 标签: 修正,用户,装置 | 浏览: 466

快速树立依据web的postfix邮件体系 需求:树立一个依据web的邮件效劳器。

环境:

[root@cc ~]# cat /etc/redhat-release
CentOS release 4.6 (Final)
[root@cc ~]# uname -a
Linux cc 2.6.9-67.ELsmp #1 SMP Fri Nov 16 12:48:03 EST 2007 i686 i686 i386 GNU/Linux


一切软件包:

postfix-2.4.7.tar.gz
mysql-5.0.45-linux-i686.tar.gz
cyrus-sasl-2.1.22.tar.gz
DB-4.5.20
httpd-2.2.6.tar.gz
php-5.2.5.tar.bz2
courier-authlib-0.59.1.tar.bz2
courier-imap-4.0.4.tar.bz2
extmail-1.0.2.tar.gz
extman-0.2.2.tar.gz   
maildrop-2.0.4
Unix-Syslog-0.100.tar.gz
DBD-mysql-3.0002_4.tar.gz
DBI-1.604.tar.gz

libjpeg-devel-6b-33.i386.rpm
libpng-devel-1.2.7-3.el4_5.1.i386.rpm
zlib-devel-1.2.1.2-1.2.i386.rpm


主机名: mail.test.com
域名:   test.com


一. 卸载sendmail

    shell> sudo rpm -e sendmail-8.13.1-3.2.el4 nodeps
   
二. 装置mysql

    # groupadd mysql
    # useradd -g mysql -s /bin/false -M mysql
    # tar -zxvf mysql-5.0.51a-linux-i686-glibc23.tar.gz
    # cd mysql-5.0.51a-linux-i686-glibc23
    # mkdir /usr/local/mysql
    # ./configure prefix=/usr/local/mysql enable-thread-safe-client enable-local-infile with-charset=gbk with-extra-charset=all with-low-memory
    # make
    # make install
    # cp support-files/my-medium.cnf  /etc/my.cnf
    # cd  /usr/local/mysql
    # chown -R mysql .
    # chgrp -R mysql .
    # ./bin/mysql_install_db user=mysql
    # chown -R root .
    # chown -R mysql var
    # ./bin/mysqld_safe user=mysql &

    # cd  /usr/local/src/mysql-5.0.45     (这儿的目录指的是原压缩包解压后的目录)
    # cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
    # chmod  700  /etc/rc.d/init.d/mysqld
    参加主动发动效劳行列:
    # chkconfig add mysqld
    # chkconfig  level  345  mysqld  on

    测验
    # /usr/local/mysql/bin/mysqladmin  ping
    # /usr/local/mysql/bin/mysqladmin  version
    # /usr/local/mysql/bin/mysql

    增加root暗码
    # /usr/local/mysql/bin/mysqladmin -uroot -p newpasswd
    阐明:此刻mysql的root用户的暗码为空

    装备库文件查找途径
    # echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
    # ldconfig -v

    增加/usr/local/mysql/bin到环境变量PATH中
    #export PATH=$PATH:/usr/local/mysql/bin



三、装置sasl-2.1.22

#tar zxvf cyrus-sasl-2.1.22.tar.gz
#cd cyrus-sasl-2.1.22
#./configure prefix=/usr/local/sasl2  disable-gssapi  disable-anon  disable-sample  disable-digest enable-plain enable-login  enable-sql  with-mysql=/usr/local/mysql  with-mysql-includes=/usr/local/mysql/include/mysql with-mysql-libs=/usr/local/mysql/lib/mysql  with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
#make
#make install

封闭原有的sasl:
# mv /usr/lib/libsasl2.a  /usr/lib/libsasl2.a.OFF
# mv /usr/lib/libsasl2.la  /usr/lib/libsasl2.la.OFF
# mv /usr/lib/libsasl2.so.2.0.19  /usr/lib/libsasl2.so.2.0.19.OFF
# mv /usr/lib/sasl2  /usr/lib/sasl2.OFF
# rm /usr/lib/libsasl2.so
# rm /usr/lib/libsasl2.so.2

# ln -sv /usr/local/sasl2/lib/*  /usr/lib

postfix 2.3今后的版别会别离在/usr/local/lib和/usr/local/include中查找sasl库文件及头文件,故还须将其链接至此目录中:
# ln -sv /usr/local/sasl2/lib/*  /usr/local/lib
# ln -sv /usr/local/sasl2/include/sasl/*  /usr/local/include

创立运转时需求的目录并调试发动
# mkdir -pv /var/state/saslauthd      
# /usr/local/sasl2/sbin/saslauthd  -a  shadow  pam  -d

发动并测验
# /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用户暗码

装备库文件查找途径
# echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
# echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
# ldconfig -v

开机主动发动
# echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam">>/etc/rc.local


四、装置berkeley db。

#mkdir /usr/local/BerkeleyDB
#tar zxvf db-4.5.20.tar.gz
#cd db-4.5.20/build_unix
#../dist/configure prefix=/usr/local/BerkeleyDB
#make
#make install

修正相应的头文件指向
# mv  /usr/include/db4  /usr/inculde/db4.OFF
# rm  /usr/include/db_cxx.h
# rm  /usr/include/db.h
# rm  /usr/include/db_185.h
# ln -sv /usr/local/BerkeleyDB/include  /usr/include/db4
# ln -sv /usr/local/BerkeleyDB/include/db.h  /usr/include/db.h
# ln -sv /usr/local/BerkeleyDB/include/db_cxx.h  /usr/include/db_cxx.h

装备库文件查找途径
# echo "/usr/local/BerkeleyDB/lib" >> /etc/ld.so.conf
# ldconfig -v


五、装置httpd-2.2.6

#tar jxvf httpd-2.2.6.tar.gz
#cd httpd-2.2.6
#./configure
prefix=/usr/local/apache
sysconfdir=/etc/httpd
enable-so
enable-ssl
with-ssl=/usr/local/ssl
enable-track-vars
enable-rewrite
with-zlib
enable-mods-shared=most  
enable-suexec                      (后边extmail切换”运转时用户”时要用到)
with-suexec-caller=daemon  
#make
#make install

#echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.d/rc.local(体系发动时效劳主动发动)

六、装置php-5.2.5

# tar -zvxf php-5.2.5.tar.gz
# mkdir -p /usr/local/php
# cd php-5.2.5
# ./configure prefix=/usr/local/php              
  with-apxs2=/usr/local/apache/bin/apxs
  with-mysql=/usr/local/mysql
  with-mysqli=/usr/local/mysql/bin/mysql_config
  with-xml
  with-png
  with-jpeg
  with-zlib
  with-freetype
  with-gd  
  enable-track-vars  
  enable-mbstring=all
# make
# make install
# cp php.ini-dist  /usr/local/php/lib/php.ini

注:修正apache装备文件httpd.conf,以apache支撑php
# vi /etc/httpd/httpd.conf
1、增加如下二行
  AddType application/x-httpd-php  .php
  AddType application/x-httpd-php-source  .phps

2、定位至DirectoryIndex index.html
  修正为:
   DirectoryIndex  index.php  index.html

3、依照运用习气,这儿将网站根目录指定到/var/www:
找到DocumentRoot “/usr/local/apache/htdocs”
修正为:DocumentRoot “/var/www”(后文中咱们还会注释掉此行,以启用虚拟主机)

找到<Directory “/usr/local/apache/htdocs”>
修正为:<Directory “/var/www”>

阐明:这个对本文来说并非是不行少的。


七、装置Postfix-2.4.5

1.装置
#groupadd -g 2525 postfix
#useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
#groupadd -g 2526 postdrop
#useradd -g postdrop -u 2526 -s /bin/false -M postdrop

#tar zxvf postfix-2.4.5.tar.gz
#cd postfix-2.4.5
#make makefiles CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl -I/usr/local/BerkeleyDB/include  -DUSE_TLS -I/usr/local/ssl/include/openssl AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib -L/usr/local/ssl/lib -lssl -lcrypto
#make
#make install

依照以下的提示输入相关的途径([]号中的是缺省值,”]”后的是输入值)

  install_root: [/] /
  tempdir: [/usr/local/src/ postfix-2.4.5] /tmp
  config_directory: [/etc/postfix] /etc/postfix
  daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
  command_directory: [/usr/sbin] /usr/local/postfix/sbin
  queue_directory: [/var/spool/postfix]
  sendmail_path: [/usr/sbin/sendmail]
  newaliases_path: [/usr/bin/newaliases]
  mailq_path: [/usr/bin/mailq]
  mail_owner: [postfix]
  setgid_group: [postdrop]   
    html_directory: [no] /var/www/postfix_html
    manpages: [/usr/local/man] /usr/local/postfix/man   
    readme_directory: [no]

阐明:这儿的postfix将装置在独立的目录/usr/local/postfix中,意图是为了便利办理;您亦能够选用默许装置的办法,或许这样运用起来会更为便利些;

生成别号二进制文件,这个过程假如疏忽,会形成postfix功率极低:
#  newaliases

2.进行一些根本装备,测验发动postfix并进行发信
#vi /etc/postfix/main.cf
修正以下几项为您需求的装备
myhostname = mail.test.com
myorigin = test.com  
mydomain = test.com
mydestination = $myhostname, localhost.$mydomain, localhost, $hostname
mynetworks = 192.168.1.0/24, 127.0.0.0/8

阐明:
myorigin参数用来指明发件人地点的域名;
mydestination参数指定postfix接纳邮件时收件人的域名,即您的postfix体系要接纳到哪个域名的邮件;
myhostname 参数指定运转postfix邮件体系的主机的主机名,默许情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默许情况下,postfix将myhostname的榜首部分删去而作为mydomain的值;
mynetworks 参数指定你地点的网络的网络地址,postfix体系依据其值来差异用户是长途的仍是本地的,假如是本地网络用户则答应其拜访;
inet_interfaces 参数指定postfix体系监听的网络接口;

留意:
1、在postfix的装备文件中,参数行和注释行是不能处在同一行中的;
2、任何一个参数的值都不需求加引号,不然,引号将会被当作参数值的一部分来运用;
3、每修正参数及其值后履行 postfix reload 即可令其收效;但若修正了inet_interfaces,则需从头发动postfix;
4、假如一个参数的值有多个,能够将它们放在不同的行中,只需求在这以后的每个行前多置一个空格即可;postfix会把榜首个字符为空格或tab的文本行视为上一行的连续;

发动postfix
/usr/local/postfix/sbin/postfix  start

衔接postfix,验正效劳发动情况:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is ^].
220 mail.benet.org ESMTP Postfix
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@benet.org
250 2.1.0 Ok
rcpt to:redhat@benet.org
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:Mail test!
Mail test!!!
.
250 2.0.0 Ok: queued as AB94A1A561
quit
221 2.0.0 Bye
Connection closed by foreign host.

切换到redhat用户进行收信:
# su - redhat
$ mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/redhat": 1 message 1 new
>N  1 root@benet.org        Wed Sep  5 10:59  15/488   "Mail test!"
&


八、为postfix敞开依据cyrus-sasl的认证功用

运用以下指令验正postfix是否支撑cyrus风格的sasl认证,假如您的输出为以下成果,则是支撑的:
# /usr/local/postfix/sbin/postconf  -a
cyrus
dovecot

#vi /etc/postfix/main.cf
增加以下内容:
CYRUS-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  # 都写在一行

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

#vi /usr/local/lib/sasl2/smtpd.conf
增加如下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

让postfix从头加载装备文件
#/usr/local/postfix/sbin/postfix reload

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is ^].
220 Welcome to our mail.benet.org ESMTP,Warning: Version not Available!
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN               (请保证您的输出以相似两行)
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN




九、让postfix支撑虚拟域和虚拟用户

1、修正/etc/postfix/main.cf,增加如下内容:
Virtual Mailbox Settings#
virtual_mailbox_base = /var/mailbox
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:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
QUOTA Settings#
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 users maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes

2、增加为支撑虚拟域和虚拟用户所用到的装备文件

修正/etc/postfix/mysql_virtual_alias_maps.cf ,增加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address

修正/etc/postfix/mysql_virtual_domains_maps.cf ,增加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain

修正/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,增加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username

修正/etc/postfix/mysql_virtual_mailbox_maps.cf ,增加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username


阐明:
1、这儿用到的数据库及用户的树立可今后文中的extmail阐明部分来完成,您能够参照那一部分来了解这儿指定的数据库及其用户名等;
2、以上新建文件亦能够从extman装置文件中取得,您也能够由此不必手动输入;
3、虚拟用户邮箱目录我这儿沿用了/var/mailbox,你能够指定为其他目录,比方常见到的/var/spool/mail,或许/home/domains等;但假如这儿做了修正,请在后文顶用届时作了相应的修正;


十、装置Courier authentication library

# tar jxvf courier-authlib-0.59.1.tar.bz2
# cd courier-authlib-0.59.1
# ./configure prefix=/usr/local/courier-authlib sysconfdir=/etc without-authpam without-authldap without-authpwd without-authshadow without-authvchkpw without-authpgsql with-authmysql with-mysql-libs=/usr/local/mysql/lib/mysql with-mysql-includes=/usr/local/mysql/include/mysql with-redhat with-authmysqlrc=/etc/authmysqlrc with-authdaemonrc=/etc/authdaemonrc CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
# make
# make install

# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist  /etc/authdaemonrc
# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

修正/etc/authdaemonrc 文件
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10

修正/etc/authmysqlrc 为以下内容,其间2525,2525 为postfix 用户的UID和GID。
MYSQL_SERVER localhost
MYSQL_PORT 3306                   (指定你的mysql监听的端口,这儿运用默许的3306)
MYSQL_USERNAME  extmail      (这时为后文要用的数据库的一切者的用户名)
MYSQL_PASSWORD extmail        (暗码)
MYSQL_SOCKET  /tmp/mysql.sock
MYSQL_DATABASE  extmail
MYSQL_USER_TABLE  mailbox
MYSQL_CRYPT_PWFIELD  password
MYSQL_UID_FIELD  2525
MYSQL_GID_FIELD  2525
MYSQL_LOGIN_FIELD  username
MYSQL_HOME_FIELD  concat(/var/mailbox/,maildir)
MYSQL_NAME_FIELD  name
MYSQL_MAILDIR_FIELD  concat(/var/mailbox/,maildir)

# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig add courier-authlib
# chkconfig level 2345 courier-authlib on

#echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
# ldconfig -v
# service courier-authlib start   (发动效劳)




十一、装置Courier-IMAP

# tar jxvf courier-imap-4.1.3.tar.bz2
# cd courier-imap-4.1.3
# mkdir /usr/local/courier-imap
# ./configure
  prefix=/usr/local/courier-imap
  with-redhat
  enable-unicode
  disable-root-check
  with-trashquota
  without-ipv6
  CPPFLAGS=-I/usr/local/ssl/include/openssl  -I/usr/local/courier-authlib/include   
  LDFLAGS=-L/usr/local/courier-authlib/lib/courier-authlib  
  COURIERAUTHCONFIG=/usr/local/courier-authlib/bin/courierauthconfig
# make
# make install

# cp /usr/local/courier-imap/etc/imapd.dist /usr/local/courier-imap/etc/imapd
# cp /usr/local/courier-imap/etc/imapd-ssl.dist /usr/local/courier-imap/etc/imapd-ssl
# cp /usr/local/courier-imap/etc/pop3d.dist /usr/local/courier-imap/etc/pop3d
# cp /usr/local/courier-imap/etc/pop3d-ssl.dist /usr/local/courier-imap/etc/pop3d-ssl

装备Courier-IMAP,为用户供给pop3效劳:
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES

注:假如你想为用户供给IMAP效劳,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes";其它类同;

新建虚拟用户邮箱地点的目录,并将其权限赋予postfix用户:
#mkdir -pv /var/mailbox
#chown -R postfix /var/mailbox

#cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
#chmod 755 /etc/rc.d/init.d/courier-imapd
#chkconfig add courier-imapd
#chkconfig level 2345 courier-imapd on
#service courier-imapd start

接下来从头装备SMTP 认证,修正 /usr/local/lib/sasl2/smtpd.conf ,保证其为以下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket




十二、装置Extmail-1.0.2

1、装置
# tar zxvf extmail-1.0.2.tar.gz
# mkdir -pv /usr/local/apache/htdocs/extsuite
# mv extmail-1.0.2 /usr/local/apache/htdocs/extsuite/extmail
# cp /usr/local/apache/htdocs/extsuite/extmail/webmail.cf.default  /usr/local/apache/htdocs/extsuite/extmail/webmail.cf

2、修正主装备文件
#vi /usr/local/apache/htdocs/extsuite/extmail/webmail.cf

部分修正选项的阐明:

SYS_MESSAGE_SIZE_LIMIT = 5242880
用户能够发送的最大邮件

SYS_USER_LANG = en_US
言语选项,可改作:
SYS_USER_LANG = zh_CN

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的寄存目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置衔接数据库效劳器所运用用户名、暗码和邮件效劳器用到的数据库,这儿修正为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = 123456


SYS_MYSQL_HOST = localhost
指明数据库效劳器主机名,这儿默许即可

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
衔接数据库的sock文件方位,这儿修正为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock


SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户暗码别离对应的表中列的称号;这儿默许即可

SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的方位,这儿修正为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket


3、apache相关装备

因为extmail要进行本地邮件的投递操作,故有必要将运转apache效劳器用户的身份修正为您的邮件投递署理的用户;本例中打开了apache效劳器的suexec功用,故运用以下办法来完成虚拟主机运转身份的指定。此例中的MDA为postfix自带,因而将指定为postfix用户:
<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
SuexecUserGroup postfix postfix
</VirtualHost>

修正 cgi履行文件属主为apache运转身份用户:
# chown -R postfix.postfix /usr/local/postfix/htdocs/extsuite/extmail/cgi/

假如您没有打开apache效劳器的suexec功用,也能够运用以下办法处理:
# vi /etc/httpd/httpd.conf
User postfix
Group postfix

<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
</VirtualHost>

4、依靠联络的处理

extmail将会用到perl的DBD::Mysql和Unix::syslogd功用,能够去http://search.cpan.org查找下载原码包进行装置。
# tar zxvf Unix-Syslog-0.100.tar.gz
# cd Unix-Syslog-0.100
# perl Makefile.PL
# make
# make install

DBD-Mysql现在最新的版别为DBD-mysql-4.005,但它和体系中的perl结合运用时会形成extmail无法正常运用,因而咱们选用3的版别:
# tar zxvf DBD-mysql-3.0002_4.tar.gz  
# cd cd DBD-mysql-3.0002_4
# perl Makefile.PL   (此过程中假如呈现类同Cant exec "mysql_config": No such file or directory at Makefile.PL line 76.的过错是因为您的mysql的bin目录没有输出至$PATH环境变量)
# make
# make install

十三、装置Extman-0.2.2

1、装置及根本装备

#tar zxvf  extman-0.2.2.tar.gz
# mv extman-0.2.2 /usr/local/apache/htdocs/extsuite/extman

修正装备文件以契合本例的需求:
# vi /usr/local/apache/htdocs/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的寄存目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此处修正为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock

运用extman源码目录下docs目录中的extmail.sql和init.sql树立数据库:

# cd /usr/local/apache/htdocs/extsuite/extman/docs
# mysql -u root -p <extmail.sql
# mysql -u root -p <init.sql

修正cgi目录的属主:
# chown -R postfix.postfix /usr/local/apache/htdocs/extsuite/extman/cgi/

假如extman拜访数据库权限缺乏的话,可选用以下指令将新生成的数据库赋予webman用户具有一切权限:
mysql> GRANT all privileges on extmail.* TO webman@localhost IDENTIFIED BY webman;
mysql> GRANT all privileges on extmail.* TO webman@127.0.0.1 IDENTIFIED BY webman;

在apache的主装备文件中Extmail的虚拟主机部分,增加如下两行:
ScriptAlias /extman/cgi /usr/local/apache/htdocs/extsuite/extman/cgi
Alias /extman /usr/local/apache/htdocs/extsuite/extman/html

创立其运转时所需的暂时目录,并修正其相应的权限:
#mkdir  -pv  /tmp/extman
#chown postfix:postfix  /tmp/extman


将/usr/local/apache/htdocs/下一切的内容的一切者权限交付给postfix。
# chown -R postfix:postfix /usr/local/apache/htdocs/

树立/var/www的映射:
#ln -s /usr/local/apache/htdocs /var/www

去掉登录办理界面中的验证码:
修正/var/www/extsuite/extman/webman.cf,
将:SYS_CAPTCHA_ON = 1
改为:SYS_CAPTCHA_ON = 0

在mysql数据库中新建postfix的用户,对extmail数据库有彻底操控权限。   

好了,到此为止,从头发动apache效劳器后,您的Webmail和Extman现已能够运用了,能够在浏览器中输入指定的虚拟主机的称号进行拜访,如下:
http://mail.test.com

挑选办理即可登入extman进行后台办理了。默许办理帐号为:root@extmail.org  暗码为:extmail*123*

阐明:
(1) 假如您装置后无法正常显现校验码,装置perl-GD模块会处理这个问题。假如想简略,您能够到以下地址下载合适您的渠道的rpm包,装置即可:  http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
(2) extman-0.2.2自带了图形化显现日志的功用;此功用需求rrdtool的支撑,您需求装置此些模块才或许正常显现图形日志。

2、(新增2007.9.18)装备Mailgraph_ext,运用Extman的图形日志:

接下来装置图形日志的运转所需求的软件包Time::HiRes、File::Tail和rrdtool,其间前两个包您能够去http://search.cpan.org查找并下载取得,后一个包您能够到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载取得; 留意装置次序不能转换。

装置Time::HiRes
#tar zxvf Time-HiRes-1.9707.tar.gz
#cd Time-HiRes-1.9707
#perl Makefile.PL
#make
#make test
#make install

装置File::Tail
#tar zxvf File-Tail-0.99.3.tar.gz
#cd File-Tail-0.99.3
#perl Makefile
#make
#make test
#make install

装置rrdtool-1.2.23
#tar zxvf rrdtool-1.2.23.tar.gz
#cd rrdtool-1.2.23
#./configure prefix=/usr/local/rrdtool
#make
#make install

创立必要的符号链接(Extman会到这些途径下找相关的库文件)
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/auto/RRDs/RRDs.so   /usr/lib/perl5/5.8.5/i386-linux-thread-multi/
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/RRDp.pm   /usr/lib/perl5/5.8.5
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/RRDs.pm   /usr/lib/perl5/5.8.5

仿制mailgraph_ext到/usr/local,并发动之
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext  /usr/local  
# / usr/local/mailgraph_ext/mailgraph-init  start
# /usr/local/mailgraph_ext/qmonitor-init  start

增加到主动发动行列
echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.local
echo "/usr/local/mailgraph_ext/qmonitor-init start" >> /etc/rc.local

好了,接下来您就能够到extman的后台查看图表日志了。



十四、装置maildrop-2.0.4

maildrop是一个运用C++编写的用来替代本地MDA的带有过滤功用邮件投递署理,是courier邮件体系组件之一。它从规范输入承受信息并投递到用户邮箱;maildrop既能够将邮件投递到mailboxes格局邮箱,亦能够将其投递到maildirs格局邮箱。一起,maildrop能够从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或许转发到其它地址等。和procmail不同的是,maildrop运用结构化的过滤言语,因而,邮件体系办理员能够开发自己的过滤规矩并运用其间。

咱们在此将运用maildrop来替代postfix自带的MDA,并以此为根底扩展后文的邮件杀毒和反垃圾邮件功用的调用;在此或许会修正前文中的许多设置,请保证您的设置也做了相应的修正。

1、装置

将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig   /usr/bin
# ln -sv /usr/local/courier-authlib/include/*   /usr/include

maildrop需求pcre的支撑,因而,接下来将首要装置pcre
# tar jxvf pcre-7.3.tar.bz2
# cd pcre-7.3
# ./configure
# make
# make check
# make install

# groupadd -g 1001 vmail
# useradd -g vmail -u 1001 -M -s /sbin/nologin vmail
# tar jxvf maildrop-2.0.4.tar.bz2
# cd maildrop-2.0.4
# ./configure
    enable-sendmail=/usr/sbin/sendmail
    enable-trusted-users=root vmail
    enable-syslog=1 enable-maildirquota
    enable-maildrop-uid=1001
    enable-maildrop-gid=1001
    with-trashquota with-dirsync
# make
# make install

查看装置成果,请保证有"Courier Authentication Library extension enabled."一句呈现:
# maildrop -v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.


2、新建其装备文件/etc/maildroprc文件,首要指定maildrop的日志记载方位:
# vi /etc/maildroprc
增加:
logfile "/var/log/maildrop.log"

# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log

3、装备Postfix

修正master.cf
# vi /etc/postfix/master.cf
启用如下两行
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}

留意:界说transport的时分,即如上两行中的第二行,其参数行有必要以空格最初,不然会犯错。

修正main.cf
# vi /etc/postfix/main.cf
virtual_transport = virtual
修正为:
virtual_transport = maildrop

将下面两项指定的UID和GID作相应的修正:
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
修正为:
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001


4、修正/etc/authmysqlrc

# vi /etc/authmysqrc
MYSQL_UID_FIELD  2525
MYSQL_GID_FIELD  2525
更改为:
MYSQL_UID_FIELD  1001
MYSQL_GID_FIELD  1001

留意:没有此处的修正,maildrop或许会陈述 “signal 0x06”的过错陈述。

5、修正/etc/httpd/httpd.conf,修正运转用户:

假如启用了suexec的功用,则将虚拟主机中指定的
SuexecUserGroup postfix postfix
修正为:
SuexecUserGroup vmail vmail

假如没有运用上面的功用,则修正User和Group指令后的用户为vmail
将前文中的如下项
User postfix
Group postfix
修正为:
User vmail
Group vmail

6、将用户邮件地点的目录/var/mailbox和extman的暂时目录/tmp/extman的属主和属组指定为vmail
#chown -R vmail.vmail /var/mailbox
#chown -R vmail.vmail /tmp/extman
#chown -R vmail:vmail /usr/local/apache/htdocs/extsuite


接下来从头发动postfix和apache,进行发信测验后,假如日志中的记载类同以下项,则装置成功

Sep 16 12:04:43 Ixor postfix/pipe[14266]: 46B491A5CB: to=<marion@test.com>, relay=maildrop, delay=2306, delays=2306/0.04/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop service)


[ 本帖最后由 marion 于 2008-1-8 12:25 修正 ]




问题:

maillog日志中提示:
Apr 16 14:12:02 cc postfix/trivial-rewrite[3379]: warning: do not list domain test.com in BOTH mydestination and virtual_mailbox_domains,而且邮件被发送到了/var/mail/中,而不是/var/mailbox

处理:

修正/etc/postfix/main.cf,将mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 改为 mydestination = $myhostname, localhost.$mydomain, localhost, $hostname 就好了

原因:

$mydestination和$virtual_mailbox_domains抵触了

问题:
怎么对附件巨细做约束。
处理:
修正 /etc/postfix/main.cf
写入 message_size_limit = 20000000 (约束为20M,已byte为单位)

修正 extmail下的webmail.cf
修正 SYS_MESSAGE_SIZE_LIMIT = 20242880 (约束为20M,以byte为单位)




问题:

怎么约束外发邮件,即只答应向某个域发送邮件,下面的办法是约束某几个账户,将@以及前面的部分删掉就约束了域:

约束部分Postfix用户只能内部收发的比如(完好版)

本来的帖子:http://www.extmail.org/forum/viewthread.php?tid=524 这儿完成的功用有些缺点,关于约束的用户,其实只能对其外发(或许说rcpt to)做约束,而关于恣意来信人给其发来的email则没有约束才能,真实的内部收发邮件用户,应该是只答应它和指定的内部域名(用户)联络,关于发向任何外部邮件域,或恣意外部邮件域发来的邮件,都是制止的。

这儿给出一个装备,仅供我们参阅。

装备办法:

1)在main.cf里界说如下的smtpd_restriction_classes:

QUOTE:
# restrictions
smtpd_restriction_classes = local_out_only local_in_only
local_out_only = check_recipient_access hash:/etc/postfix/local_domains, reject
local_in_only = check_sender_access hash:/etc/postfix/local_domains, reject

2)将main.cf里的smtpd_recipient_restrctions界说为:

QUOTE:
smtpd_recipient_restrictions =
        check_sender_access hash:/etc/postfix/local_out_only
        check_recipient_access hash:/etc/postfix/local_in_only
        permit_mynetworks
        permit_sasl_authenticated
        reject_non_fqdn_hostname
        reject_non_fqdn_sender
        reject_non_fqdn_recipient
        reject_unauth_destination
        reject_unauth_pipelining
        reject_invalid_hostname

3)修正/etc/postfix/local_in_only:

QUOTE:
foo@extmail.org local_in_only
bar@extmail.org local_in_only

4)修正/etc/postifx/local_out_senders:

QUOTE:
foo@extmail.org local_out_only
bar@extmail.org local_out_only

5)修正/etc/postfix/local_domains:

QUOTE:
internal.foo.com         OK
internal.bar.com         OK

6)为3,4,5树立对应的hash文件:

QUOTE:
# postmap hash:/etc/postfix/local_in_only
# postmap hash:/etc/postfix/local_out_only
# postmap hash:/etc/postfix/local_domains

这样就界说了extmail.org域名里两个用户foo和bar,只答应和internal.foo.com和internel.bar.com 两个内部域的用户交游邮件,关于外部的邮件则没有收或发的才能。假如外部邮件妄图给这2个用户发送,则遇到如下过错:

QUOTE:
554 5.7.1 <foo@extmail.org>: Recipient address rejected: Access denied

假如这2个内部用户要给外部用户发email,将遇到如下过错:

QUOTE:
554 5.7.1 <bar@extmail.org>: Sender address rejected: Access denied

现在这样的装备就能够比较完好的完成内部用户的功用需求了。其实这种装备的办法和之前的帖子道理相同,要害得分清楚什么阶段,调用什么restrictions即可。

 

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3
  • 4
  • 5

    CentOS7装置MySQLITeye

    装置,暗码,设置
  • 6

    指令别号和快捷方式ITeye

    别号,收效,永久
  • 7

    cron相关ITeye

    网站,识别码,监控
  • 8
  • 9

    Bat根底ITeye

    运用,树立,子目录
  • 10

    装置FedoraITeye

    装置,删去,需求