aptititude install postfix
选择internet 模式
填写 dna.com,需要预先设置本机域名 mail.dna.com

aptitude install postfixadmin

数据库选择mysql
输入mysql的root密码,然后设置postfixadmin的setup密码为  adminForPostfiX

http://mail.dna.com/setup.php

设置postfixadmin
更新密码 postfixadminqiuyuetao
将更新密码生成的hash复制到  /etc/postfixadmin/config.inc.php里的
setup_password 里

新增加管理员 qiuyuetao@dna.com 密码qiuyuetao

改用dovecot,不用courier

aptitude install dovecot-pop3d dovecot-imapd dovecot-mysql

postfix 的验证可以通过 sasl2-bin所生成的saslauthd来进行验证。
但是与dovecot配合时,通过dovecot来验证,所以不需要sasl2-bin
验证通过/var/spool/postfix/private/auth的socket文件来进行交互。
这是折腾了一天得到的宝贵经验。

roundcube admin rdba

第二天
昨天卡在了dovecot的验证上,用数据库验证总是不能通过。log里总是显示auth fail,不能得到详细的登录日志
看dovecot的doc,找到在 /conf.d/10-logging.conf里更改日志记录等级。
增加debug_log_path = /var/log/mail.debug
auth_debug = yes
然后就能在mail.debug文件中查看详细的登录时执行的查询sql。
发现sql没有捕捉到%d参数。原来在客户端用的登录名是user,而不是user@domain.com
用了完整的登录名称,总算是通过了验证。

可以发邮件之后。
不能收是个问题,总是提示status=bounced (unknown user)
需要在postfix的main.cf中加入
local_transport = dovecot

设置roundcube之后登录
用全用户名登录,如 q@domain.com
报错 Class 'Net_IDNA2' not found 这个问题
因为是php5-intl这个模块装了之后,php-cgi进程没有重启加载新module,重启php进程之后就好了

以上都是流水帐,以下是正经的总结。
debian wheezy 装好后
先设置好升级源指向内网 http://mirrors.dna.com/mirrors.163.com/debian main contrib non-free

由于开始安装时提示缺少固件,先装firmware-linux
配置内外网网卡
卸载nano
安装 vim,把自己常用的.vim复制到自己的home里
禁用root登录ssh
装fail2ban

配置bash-completion 把/etc/profile最下面的部分粘贴到 /etc/bash.bashrc里
配置ssh密钥登录
ssh-keygen -b 1024 -t dsa
输入密钥名字mail ,然后把mail.pub scp 到服务器端,mv mail.pub .ssh/authorized_keys
wheezy的ssh设置,直接就可以用密钥登录了auth       sufficient pam_wheel.so trust

设置wangfan可以直接su
取消/etc/pam.d/su 的注释
auth       sufficient pam_wheel.so trust
命令行
groupadd wheel
gpasswd wheel -a wangfan
装基础包
make gcc g++
curl -L https://get.rvm.io | bash -s stable --ruby
上ruby,这个和配置mail服务器没啥关系。

装mail软件
nginx php5-cgi spawn-fcgi
aptitude install postfix-mysql mysql-server dovecot-mysql dovecot-imapd dovecot-pop3d

顺带来一句,发生了ssh登录问题
之前用key登录一直没问题的主机和新主机,都出现了
Too many authentication failures for username 的问题
key-add -D没用
后来看了这个
http://superuser.com/questions/187779/too-many-authentication-failures-for-username
在.ssh/config里主机设置里得加上IdentitiesOnly yes

装postfixadmin时,输入mysql的root密码自动建立postfixadmin的库,并定义postfixadmin的密码为 postfixadMin
设置好postfixadmin的web访问网址,访问/setup.php
设置setup密码 postfixPPP
添加用户之前,必须先设置好加密方式
由于dovecot升级到2之后,doveadm pw命令取代了原来的dovecotpw
修改/usr/share/postfixadmin/config.inc.php
以dovecot的加密方式来认证密码
wangfan@chinagenecloud.com   WangFan
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = '/usr/bin/doveadm pw';
修改同路径下的function.php
1244行,大概这么个位置(行位置可能随版本变化而变)
if(!$pipe) {
die("can't proc_open $dovecotpw");
} else {
把$password = fread($pipes[1], "200");这行和这行以上到else之下都注释了
添加一行
$password = `$dovecotpw '-s' $method -p '$pw'`;
}
这要是不改的话,回头加密方式不一样,新加的用户肯定登录不上去。

apt方式装phpmyadmin 密码为 phpmyadmin

添加虚拟用户,该用户所属mail用户组
useradd -g mail -u 500 vmail -d /home/vmail -m -s /bin/false

cd /etc/postfix
vi main.cf
把smtpd_tls_* 的都注释掉
先都不用tls,需要用的教程另写
改好域名信息,其他默认配置都不需要更改
myhostname = mail.dna.com
myorigin = dna.com
mydomain = $myorigin
mydestination = localhost, dna.com, localhost.$mydomain, $mydomain

在最下增加
# virtual config
virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf
local_transport = dovecot
virtual_transport = dovecot
#dovecot_destination_recipient_limit = 1
virtual_minimum_uid = 500
virtual_uid_maps = static:500
virtual_gid_maps = static:8

# sasl
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#smtpd_tls_cert_file = /etc/postfix/smtpd.cert
#smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = no
smtpd_recipient_restrictions =permit_mynetworks permit_sasl_authenticated reject_unauth_destination permit_auth_destination permit

文件 mysql_virtual_domains_maps.cf 内容如下
user = mail
password = mail
hosts = 127.0.0.1
dbname = postfixadmin
table = domain
select_field = domain
where_field = domain
additional_conditions = AND backupmx = '0' AND active = '1'

文件 mysql_virtual_mailbox_maps.cf 内容如下
user = mail
password = mail
hosts = 127.0.0.1
dbname = postfixadmin
table = mailbox
select_field = CONCAT(domain, '/', maildir)
where_field = name
additional_conditions = AND active = '1'

文件 mysql_virtual_alias_maps.cf  内容
user = mail
password = mail
hosts = 127.0.0.1
dbname = postfixadmin
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'

编辑 master.cf
最下加入
dovecot   unix  -       n       n       -       -       pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d ${recipient} -f ${sender}

每个文件里的用户名密码和库指向随配置不同自行更改。

dovecot配置
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain
允许明文密码登录,如果是yes的话,web登录可以配置加密密码,但用foxmail等客户端的没法设置加密密码,所以为no
最下面的 !include auth-*****.conf.ext
的一堆东西
把sql 那个取消注释,其他的都注释掉。
接下来编辑 auth-sql.conf.ext
位置是 /etc/dovecot/conf.d/auth-sql.conf.ext
如果没有就创建一个,内容如下
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
然后编辑 /etc/dovecot/dovecot-sql.conf.ext
初始状态该文件应该是全都注释的
添加内容
driver = mysql
connect = host=127.0.0.1 dbname=postfixadmin user=mail password=mail
default_pass_scheme = CRAM-MD5
user_query = SELECT '/home/vmail/%d/%n' AS home, 'maildir:/home/vmail/%d/%n' AS mail, 500 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT username, password, '/home/vmail/%d/%n' AS userdb_home, 'maildir:/home/vmail/%d/%n' AS userdb_mail, 500 AS userdb_uid, 8 AS userdb_gid, domain FROM mailbox WHERE username = '%u' AND active = '1'
iterate_query = SELECT username, domain FROM mailbox
再回到conf.d目录,编辑 10-mail.conf
mail_location = maildir:/home/vmail/%d/%u
mail_uid = 500
mail_gid = 8
这两个id是刚才添加的vmail的uid和系统本身存在的mail用户的gid,可随配置而自行更改。
编辑 10-master.conf
找到 service auth 这个块,里面的
unix_listener auth-userdb {
mode = 0660
user = vmail
group = mail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
这个postfix的更改正好配合了postfix的main.cf里的 private/auth 设置

测试邮件,几乎100%都有些问题,dove的debug在conf.d/10-logging.conf里设置
修改 debug_log_path = /var/log/mail.debug 然后查看该文件的输出
以debug方式运行时会收不到邮件,查看mail.info发现postfix不能写入mail.debug,权限不够
修改mail.debug 所属组
chown root:adm mail.debug

要多看/var/log/mail.info的输出

apt装roundcube
设置roundcube 库密码 masterCube
由于是apt安装,配置文件在/etc/roundcube里
修改main.inc.php
$rcmail_config['default_host']
smtp_user  %u
smtp_pass  %p