配置postfix
配置postfix分为2个部分,配置postfix使用mysql库读取数据,配置postfix使用dovecot分发邮件。
  配置数据库前,现讲解下postfix对信箱的映射规则。一个虚拟用户可以有几个别名,但是邮件会送到哪个邮箱呢?
  规则:别名优先于用户名转发
  刚才的mysql配置过程我们给zhang3设置了2个别名分别是zhang3li4并配置了''转发给wang5;由于上面规则zhang3有别名 它不会查找用户名,而直接转发给zhang3li4;''代表空也就是post.star.com这个域的所有邮件,所以li4的邮件就会被转发给wang5而不是给它本身的邮箱.空域名一种垃圾处理机制,下面会解释。
接下来创建4个文件 domains.cf  mailbox-maps.cf alias-maps.cf email2email.cf
#sudo mkdir /etc/postfix/mysql
#sudo vi /etc/postfix/mysql/domains.cf
user = mailadmin
password = libertine
hosts = 127.0.0.1
dbname = mail
query = select 1 from virtual_domains where name ='%s'
#postmap -q post.star.com mysql:/etc/postfix/mysql/domains.cf         检测
1
#postconf -e virtual_mailbox_domains= mysql:/etc/postfix/mysql/domains  输入到main.cf
#sudo vi /etc/postfix/mysql/mailbox-maps.cf
user = mailadmin
password = libertine
hosts = 127.0.0.1
dbname = mail
query = select 1 from view_users where email='%s'
#postmap -q zhang3@post.star.com mysql:/etc/postfix/mysql/mailbox-maps.cf         检测
1
#postconf -e virtual_mailbox_maps= mysql:/etc/postfix/mysql/mailbox-maps.cf  输入到main.cf
#sudo vi /etc/postfix/mysql/alias-maps.cf
user = mailadmin
password = libertine
hosts = 127.0.0.1
dbname = mail
query = select destination from view_aliases where email='%s'
#postmap -q zhang3@post.star.com mysql:/etc/postfix/mysql/alias-maps.cf  检测
zhang3@post.star.com li4@post.star.com        
#sudo vi /etc/postfix/mysql/email2email.cf
user = mailadmin
password = libertine
hosts = 127.0.0.1
dbname = mail
query = select email from view_aliases where email='%s'
#postmap -q wang5@post.star.com mysql:/etc/postfix/mysql/domains         检测
wang5@post.star.com
#postconf -e virtual_alias_maps= mysql:/etc/postfix/mysql
/alias-maps.cf,mysql:/etc/postfix/mysql/email2email.cf  输入到main.cf
 上面virtual_mailbox_domains 是域名查找语句
virtual_mailbox_maps 是邮件查找语句
virtual_alias_maps是别名查找语句
通过以上配置 应该看出来 在别名查找时加入了一个email2email.cf的文件,这个文件的作用就是在没有别名确有该用户的时候,把用户转发给用户本身,而不是垃圾箱。接下来没有用户和别名的邮件就垃圾回收站了。
postfix权限去控制mysql
#sudo chgrp postfix  -R /etc/postfix/mysql
#sudo chmod 640 -R /etc/postfix/mysql
使用postmap命令 已经知道postfix已经知道邮件了,现在给他们按个家
#sudo groupadd -g 5000 vmail
#sudo useradd -g 5000 -u vmail -d /var/mail/virtual -m
#sudo postconf -e virtual_uid_maps=static:5000
#sudo postconf -e virtual_gid_maps=static:5000
有家了,该接客了 配置dovecot
sudo vi /etc/postfix/master.cf                      main.cf是主配置文件  master.cfpostfix的程序文件
照着文件后边相应的格式 输入
dovecot   unix  -       n       n       -       -       pipe
 
  flags=DRhu user=vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
 
Ok
#sudo postconf -e virtual_transport=dovecot
#sudo postconf -e virtual_destination_recipient_limit=1
这样POSTFIX就配置好了
配置dovecot配置
配置/etc/dovecot/dovecot.conf文件
这个文件有1000多行,要处要改跟着我的脚步慢慢改吧.
确定协议
protocols = imap imaps pop3 pop3s
设置存储位置
mail_location = maildir:/var/mail/virtual/%d/%n/Maildir
设置用SSL/TLS加密POP3/IMAP
ssl_cert_file = /etc/ss1/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ss1/private/s1-cert-snakeoil.key
ssl_disable = no
disable_plaintext_auth = no
以下修改认证方式
认证机制
mechanisms = plain login
配置sql认证
passdb sql {
  .....
    args = /etc/dovecot/dovecot-sql.conf
  .....
}                记住了  认证方式 只有一种  开了就把PAM认证关了
配置用户数据
userdb static{
  .....
       arg = uid=5000 gid=5000 home=/var/mail/virtual/%d/%n allow_all_users=yes
  .....
}
接口监听配置
socket listen {
   master{
       path = /var/run/dovecot/auth-master
      mode = 0600
      user = vmail
     }
   client {
       path = /var/spool/postfix/private/auth
       mode = 0660
       user = postfix
       group = postfix
     }
}
PROTOCOL IDA配置
protocol lad {
      .........
           log_path = /var/mail/virtual/dovecot-deliver.log
           auth_socket_path = /var/run/dovecot/auth-master
           postmaster_address = zhang3@post.star.com
      .........
}
wq
这个文件里有很多大括号,注意 该关的都关了 不该的别关,很多括号里面也有注释 别把括号内的#都去掉了,负责服务重启不起来。
接下来配置dovecot接受mysql
#sudo vi /etc/postfix/dovect-sql.conf
在有driver标识的地方更改为
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mailadmin password=libertine
password_query = select email as user ,password from view_users where email='%u';
/wq
设置smtp认证
#sudo postconf -e smtpd_sasl_type=dovecot
#sudo postconf -e smtpd_sasl_path=private/auth
#sudo postconf -e smtpd_sasl_auth_enable=yes
#sudo postconf -e smtpd_recipient_restrictions=permit_mynetworks,pe
rmit_sasl_authenticated,reject_unauth_destination
给权限拉
#sudo chgrp vmail /etc/dovecot/dovecot.conf
#sudo chmod g+r /etc/dovecot/dovecot.conf
最后
#sudo /etc/init.d/postfix restart
#sudo /etc/init.d/dovecot restart
接下来配置OS
按照虚拟机一样的思路配置就OK了。
VE OK 试试能发邮件不
telnet 127.0.0.1 smtp
   Trying 127.0.0.1...
 
   Connected to 127.0.0.1.
 
   Escape character is '^]'.
 
   220 star.com ESMTP Postfix (Ubuntu)
 
ehlo post.star.com
   250-star.com
 
   250-PIPELINING
 
   250-SIZE 10240000
 
   250-VRFY
 
   250-ETRN
 
   250-STARTTLS
 
   250-ENHANCEDSTATUSCODES
 
   250-8BITMIME
 
   250 DSN
mail from:<zhang3@post.star.co>
 
   250 2.1.0 Ok
 
rcpt to:<li@4star.com>         star.comOS的邮件的域
   250 2.1.5 Ok
data
 
   354 End data with <CR><LF>.<CR><LF>
 
subject:hi
 
hi my friend.are you ok?
 
.
 
   250 2.0.0 Ok: queued as AD1834C64C4
 
成功的从post.star.com域给star.com域发一个邮件看下日志
Sep  8 12:16:38 star postfix/cleanup[1193]: AD1834C64C4: message-id=<20090908121555.AD1834C64C4@post.star.com>
 
Sep  8 12:16:38 star postfix/qmgr[986]: AD1834C64C4: from=<zhang3@post.star.com>, size=380, nrcpt=1 (queue active)
 
Sep  8 12:16:38 star postfix/smtp[1194]: AD1834C64C4: to=<li4@star.com>, relay=mail.star.com[158.196.0.230]:25, delay=52, delays=52/0.01/0.01/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 417F22A607E)
 
呵呵   邮件成功配置好了
一个可实现smtp pop3 imap帐户认证可收发的邮件服务器OK  
配置squirrelmail
接下来配置squirrelmail实现web发送邮件
#sudo squirrelmail-configure