Ubuntu实验报告二(下)

配置 postfix
配置 postfix 分为 2 个部分,配置 postfix 使用 mysql 库读取数据,配置 postfix 使用 dovecot 分发邮件。
  配置数据库前,现讲解下 postfix 对信箱的映射规则。一个虚拟用户可以有几个别名,但是邮件会送到哪个邮箱呢?
  规则:别名优先于用户名转发
  刚才的 mysql 配置过程我们给 zhang3 设置了 2 个别名分别是 zhang3 li4 并配置了 '' 转发给 wang5 ;由于上面规则 zhang3 有别名 它不会查找用户名,而直接转发给 zhang3 li4;'' 代表空也就是 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 [email protected] 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 [email protected] mysql:/etc/postfix/mysql/alias-maps.cf  检测
#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 [email protected] mysql:/etc/postfix/mysql/domains         检测
#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.cf postfix 的程序文件
照着文件后边相应的格式 输入
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 = [email protected]
      .........
}
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:<[email protected]>
 
   250 2.1.0 Ok
 
rcpt to:<[email protected]>         star.com OS 的邮件的域
   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=<[email protected]>
 
Sep  8 12:16:38 star postfix/qmgr[986]: AD1834C64C4: from=<[email protected]>, size=380, nrcpt=1 (queue active)
 
Sep  8 12:16:38 star postfix/smtp[1194]: AD1834C64C4: to=<[email protected]>, 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

你可能感兴趣的:(linux,ubuntu,职场,休闲)