快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

linux上安装基于postfix的全功能邮件服务器(2)

  八、为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

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

  1、编辑/etc/postfix/main.cf,添加如下内容:

  ########################Virtual 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: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 user's 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/spool/mail,你可以指定为别的目录,比如常见到的/var/mailbox,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;

  十、安装Courier authentication library

  http://jaist.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.59.3.tar.bz2

  # tar jxvf courier-authlib-0.59.3.tar.bz2

  # cd courier-authlib-0.59.3

  ./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/spool/mail/',maildir)

  MYSQL_NAME_FIELD name

  MYSQL_MAILDIR_FIELD concat('/var/spool/mail/',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   (启动服务)

  # netstat -antl|grep :25

  tcp        0      0 0.0.0.0:25                 0.0.0.0:*                   LISTEN

  十一、安装Courier-IMAP-4.1.3

  http://nchc.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.3.tar.bz2

  # tar jxvf courier-imap-4.1.3.tar.bz2

  # cd courier-imap-4.1.3

  # ./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

  ##############出现错误start@@@@@@@@@@@@@@@@@@@

  ./.libs/libcouriertls.a(libcouriertls.o): In function `init_session_cache':

  /usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:590: undefined reference to `SSL_CTX_sess_set_new_cb'

  /usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:591: undefined reference to `SSL_CTX_sess_set_get_cb'

  /usr/local/courier-imap-4.1.3/tcpd/libcouriertls.c:592: undefined reference to `SSL_CTX_sess_set_remove_cb'

  collect2: ld returned 1 exit status

  make[3]: *** [couriertls] 错误 1

  make[3]: Leaving directory `/usr/local/courier-imap-4.1.3/tcpd'

  make[2]: *** [all] 错误 2

  make[2]: Leaving directory `/usr/local/courier-imap-4.1.3/tcpd'

  make[1]: *** [all-recursive] 错误 1

  make[1]: Leaving directory `/usr/local/courier-imap-4.1.3'

  make: *** [all] 错误 2

  解决方法:更新了openssl到openssl-0.9.8f

  ps:极有可能是我openssl-0.9.8e没有装好

  tar zxvf openssl-0.9.8f.tar.gz

  cd openssl-0.9.8f

  ./config shared zlib

  make

  make test

  make install

  #不再备份是因为之前已经备份!

  rm -rf /usr/bin/openssl

  rm -rf /usr/include/openssl

  rm /usr/lib/libssl.so

  ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

  ln -s /usr/local/ssl/include/openssl /usr/include/openssl

  ln -sv /usr/local/ssl/lib/libssl.so.0.9.8 /usr/lib/libssl.so

  终于可以通过make

  ##############出现错误end@@@@@@@@@@@@@@@@@@@

  # 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/spool/mail

  #chown postfix -R /var/spool/mail

  #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

  http://www.extmail.org/cgi-bin/download.cgi

  1、安装

  # tar zxvf extmail-1.0.2.tar.gz

  # mkdir -pv /var/www/extsuite

  # mv extmail-1.0.2 /var/www/extsuite/extmail

  # cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf

  2、修改主配置文件

  #vi /var/www/extsuite/extmail/webmail.cf

  部分修改选项的说明:

  SYS_MESSAGE_SIZE_LIMIT = 5242880

  用户可以发送的最大邮件

  SYS_USER_LANG = en_US

  语言选项,可改作:

  SYS_USER_LANG = zh_CN

  SYS_MAILDIR_BASE = /home/domains

  此处即为您在前文所设置的用户邮件的存放目录,可改作(要根据签名postfix的位置一致):

  SYS_MAILDIR_BASE = /var/spool/mail

  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

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论