发新话题
打印

[email] [原创] Debian上PostFix的配置(三)

[原创] Debian上PostFix的配置(三)

  由于对ilohamail的界面和功能还有一些不满意,在进行邮件服务器迁移的时候换了Tmail 3.0(igenus for postfix)做webmail,在网上搜索好久,似乎Tmail已经失传很久了,所有下载链接均无效,还好以前曾经保留过一个,下面是安装过程中需要说明的地方。

  一. 下载安装Tmail:

  安装步骤基本同《Debian上PostFix的配置(二)》,不安装ilohamail,配置从先webmail开始,因为tmail的数据库生成脚本决定了postfix,courier,pam,sasl如何连接mysql。

  1. 从以下地址下载Tmail:

http://www.ddmdd.com/files/tmail30.tgz

  解压tmail30.tgz到/home/webmail(与apache中DocumentRoot一致),创建完数据库postifx及相关帐号后,执行SQL目录下Tmail.sql创建相关的数据表及默认管理员:

mysql -p postfix < Tmail.sql

  2. 因为管理后台webadmin登录时需要验证码,所以要安装php5-gd,并修改php.ini文件把extension=gd.so行的注释符去掉。另外Tmail是基于php4开发的,有一些类的操作方法在php5中报错:

Fatal error: Using $this when not in object context...

  上面的tmail包已经做过了修正,可以在php5上正常使用。
  
  3. 修改config/config_inc.php文件,填写正确的数据库连接帐号,根据文件中

$CFG_BASEPATH = "/home/webmail/igenus";
$CFG_NETDISK_PATH = "/home/postfix/netdisk";
$CFG_NETDISK_DEFAULT_QUOTA = 100; //MB

  值创建目录,并在其下创建temp目录。

  4. 修改webadmin/include/config_inc.php,填写正确的数据库连接帐号,并根据文件中

define(DOMAINSDIR,"/home/postfix");

  值创建postfix的主目录。由于tmail(igenus)是直接通过php程序访问Maildir目录的,速度非常快,前提是apache要有权限直接访问,经过几轮测试,很不情愿地用postfix帐号来运行apache了。

  5. 以上操作完成后就可以通过http://mail.xxx.com/webadmin以admin登录创建域名了。再以域名为用户名重新登录,可以对该域进行管理。

  二. 配置postfix

  1. 相关配置文件如下:

mail:/# cat /etc/postfix/main.cf
# Set your hostname
myhostname = mail.test.ddmdd.com
mynetworks = 127.0.0.0/8
smtpd_banner = $myhostname ESMTP ready
alias_maps = hash:/etc/aliases
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:108
virtual_mailbox_base = /  # 在数据库是绝对路径,但这里不能为空
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = virtual
virtual_uid_maps = static:103
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
disable_vrfy_command = yes
smtpd_helo_required = yes

smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unknown_recipient_domain,
 reject_non_fqdn_recipient
 reject_non_fqdn_hostname,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_unauth_destination,
 reject_unauth_pipelining,
 reject_invalid_hostname,
 permit

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
max_use = 10

mail:/# cat /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = domaininfo
select_field = des
where_field = domain
additional_conditions = and domain != 'admin' and active = '1'

mail:/# cat /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = userinfo
select_field = maildir
where_field = userid
additional_conditions = and active = '1'

mail:/# cat /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = 127.0.0.1
dbname = postfix
table = userinfo
select_field = quota
where_field = address
additional_conditions = and active = '1'


  2. 修改/etc/default/saslauthd中 "START=yes", OPTIONS中加入 "-r"。

  3. 创建文件/etc/postfix/smtpd.conf

pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
mech_list: PLAIN LOGIN


  4. 创建文件/etc/pam.d/smtp

auth required pam_permit.so
auth required pam_mysql.so user=postfix passwd=postfix db=postfix table=userinfo usercolumn=address passwdcolumn=passwd crypt=1 sqllog=1
account sufficient pam_mysql.so user=postfix passwd=postfix db=postfix table=userinfo usercolumn=address passwdcolumn=passwd crypt=1 sqllog=1


  5. 重启postfix,按第二篇的方法验证。

  三. 配置pop3和imap

  1. 修改/etc/courier/authdaemonrc文件中下行:

authmodulelist="authmysql"


  2. 修改/etc/courier/authmysqlrc文件如下:

MYSQL_SERVER      localhost
MYSQL_USERNAME     postfix
MYSQL_PASSWORD     postfix
MYSQL_PORT       0
MYSQL_OPT        0
MYSQL_DATABASE     postfix
MYSQL_USER_TABLE    userinfo
MYSQL_CRYPT_PWFIELD   passwd
MYSQL_UID_FIELD     103
MYSQL_GID_FIELD     108
MYSQL_LOGIN_FIELD    address
MYSQL_HOME_FIELD    homedir
MYSQL_NAME_FIELD    userid
MYSQL_MAILDIR_FIELD   maildir
MYSQL_QUOTA_FIELD    quota


  3. 重启courier各服务,使用第二篇的方法验证。

[ 本帖最后由 如是 于 2008-5-22 01:05 编辑 ]
欲知前世因,今生受者是。
欲知来世果,今生作者是。

TOP

好东西,支持原创~
《Linux一句话精彩问答》,经典的Linux学习手册!
《开源》,持续关注开源的免费电子杂志!
Linuxpk.com,打造中文开源第一门户!

TOP

发新话题