• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
在Fedora上建立自己的邮件服务器
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
在Fedora上建立自己的邮件服务器
软件发布 在Fedora上建立自己的邮件服务器
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 网络技术 >> 邮件服务器架设与维护 >> 在Fedora上建立自己的邮件服务器

在Fedora上建立自己的邮件服务器

添加时间: 2007-10-4 16:07:58  作者: 邮件服务器教程  阅读次数:95   来源: http://www.d9soft.com

       

A.检查你的系统是否已安装了以下软件
  1.pam  
  2.pam-devel
  3.mysql
  4.mysql-servel
  5.mysql-devel
  6.imap-devel
  7.sharutils  

  B.下载以下软件
  1.metamail*.i386.rpm
  2.pam-mysql
  3.cyrus-sasl-2.1.15
  4.postfix-2.0.16
  5.courier-imap

  C.说明

  mysql-devel在第3个盘。我忘了装,结果pam-mysql和postfix的编译过不了。

    metamail和sharutils是取验证码用的。

  二、mysql数据库和表的建立

  A.[root@localhost root]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.58
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> INSERT INTO db (Host,Db,User,Select_priv)VALUES('localhost','postfix','postfix','Y');
Query OK, 1 row affected (0.00 sec)
 
mysql> CREATE DATABASE postfix;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL ON postfix.* TO postfix@localhost
  -> IDENTIFIED BY "postfix";
Query OK, 0 rows affected (0.00 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
 
mysql> quit
Bye 
  
  B.把下列文字复制存为postfix.sql

    ########potfix_sql########bigin##################
CREATE TABLE alias (
 username varchar(255) NOT NULL default'',
 goto text NOT NULL,
 domain varchar(255) NOT NULL default'',
 PRIMARY KEY (username)
) TYPE=MyISAM;
CREATE TABLE domain (
 domain varchar(255) NOT NULL default'',
 description varchar(255) NOT NULL default'',
 PRIMARY KEY (domain)
) TYPE=MyISAM;

CREATE TABLE mailbox (
  userid char(20) binary NOT NULL default'',
  username varchar(255) NOT NULL default'',
  password varchar(255) NOT NULL default'',
  home varchar(255) NOT NULL default'',
  maildir varchar(255) NOT NULL default'',
  name varchar(255) NOT NULL default'',
  uid smallint(5) unsigned NOT NULL default'12345',
  gid smallint(5) unsigned NOT NULL default'12345',
  quota varchar(255) NOT NULL default'',
  domain varchar(255) NOT NULL default'',
  create_date date NOT NULL default'0000-00-00',
  create_time time NOT NULL default'00:00:00',
  change_date date NOT NULL default'0000-00-00',
  change_time time NOT NULL default'00:00:00',
  last_access int(10) unsigned NOT NULL default'0',
  passwd_lastchanged int(10) unsigned NOT NULL default'0',
  status tinyint(4) NOT NULL default'1',
  PRIMARY KEY (username),
  KEY status (status)
) TYPE=MyISAM;
#####################end########################

[root@localhost root]# mysql postfix < /work/postfix.sql
 

C.对表的内容的一些说明.

          mysql> use postfix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> show tables;
+-------------------+
Tables_in_postfix
+-------------------+
alias      
domain      
mailbox     
+-------------------+
3 rows in set (0.00 sec)
 
mysql> desc alias;
+----------+--------------+------+-----+---------+-------+
Field   Type     Null Key Default Extra
+----------+--------------+------+-----+---------+-------+
username varchar(255)     PRI         
goto   text                   
domain  varchar(255)               
+----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
 
mysql> desc domain;
+-------------+--------------+------+-----+---------+-------+
Field    Type     Null Key Default Extra
+-------------+--------------+------+-----+---------+-------+
domain    varchar(255)     PRI         
description varchar(255)               
+-------------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
 
mysql> desc mailbox;
+--------------------+----------------------+------+-----+------------+-------+
Field        Type         Null Key Default   Extra
+--------------------+----------------------+------+-----+------------+-------+
userid       varchar(20) binary                 
username      varchar(255)         PRI          
password      varchar(255)                    
home        varchar(255)                    
maildir       varchar(255)                    
name        varchar(255)                    
uid         smallint(5) unsigned       12345      
gid         smallint(5) unsigned       12345      
quota        varchar(255)                    
domain       varchar(255)                    
create_date     date               0000-00-00    
create_time     time               00:00:00     
change_date     date               0000-00-00    
change_time     time               00:00:00     
last_access     int(10) unsigned         0        
passwd_lastchanged int(10) unsigned         0        
status       tinyint(4)          MUL 1        
+--------------------+----------------------+------+-----+------------+-------+
17 rows in set (0.00 sec)
 
mysql>
domain表的解释:
domain 任意的domain.
description 通常是2种 "local:" 用于本地的 or "virtual:" 用于是虚拟的.
alias表的解释:
username 是虚拟的邮箱address@domain.tld ,将被转发到goto下的联结中.
goto 可以用简单的名字,如果是本地用户名,如(root, postmaster, etc.),

 或者是整个的邮箱名字,user@domain.tld。

Mailbox表的内容:
Userid 使用者编码
username 可以是user.domain.tld 或 user@domain.tld
password 在mysql中用encrypt('password') 输入.
name 使用着的真实姓名。
uid 虚拟用户身份uid
gid 组的gid 
home "/usr/local/virtual/". Maildirs必须在此目录下。
domain 这栏可以不要,但有些软件需要他。
maildir 是整个地址,必须带”/”结尾。 
Quota 邮箱的空间或信息量的限制。
status 0 为禁止。"MYSQL_WHERE_CLAUSE= status" .
 
  
  三、pam-mysql的编译  

  tar pam-mysql-5.0.tar.gz  
  make cp pam_mysql.so /lib/security  


 四、修改pam

          [root@localhost  pam_mysql]#  cd  /etc/pam.d  
  [root@localhost  pam.d]#  cp  /work/postfix  postfix  
  [root@localhost  pam.d]#  
  postfix的内容如下:  
  ##########/etc/pam.d/postfix##################  
  echo  auth  sufficient  pam_mysql.so  user=postfix
  passwd=postfix  host=localhost  db=postfix
  table=mailbox  usercolumn=username  passwdcolumn=password  crypt=1  
  echo  account  required  pam_mysql.so
  user=postfix  passwd=postfix  host=localhost
  db=postfix  table=mailbox  usercolumn=username  passwdcolumn=password  crypt=1  
  echo  auth  sufficient  pam_unix_auth.so  
  echo  account  sufficient  pam_unix_acct.so  
  [root@localhost  pam.d]#  [  -f  imap  ]  &&  mv  imap  imap.orig  
  [root@localhost  pam.d]#  [  -f  pop  ]  &&  mv  pop  pop.orig  
  [root@localhost  pam.d]#  [  -f  smtp  ]  &&  mv  smtp  smtp.orig  
  [root@localhost  pam.d]#  n  -s  postfix  imap  
  bash:  n:  command  not  found  
  [root@localhost  pam.d]#  ln  -s  postfix  imap  
  [root@localhost  pam.d]#  ln  -s  postfix  pop  
  [root@localhost  pam.d]#  ln  -s  postfix  smtp  
  [root@localhost  pam.d]#  cp  postfix  sieve  
  [root@localhost  pam.d]#  cd  ..  
  
  五、cyrus-sasl的安装配置

  我本不想重新编译cyrus-sasl的,可是fedora自带的在我测试的时候出问题,
还是重编译吧,虽然fedora带的也是2.1.15版本。

          [root@localhost etc]# cd /ruanjian
[root@localhost ruanjian]# cd cyrus-sasl-2.1.15
[root@localhost cyrus-sasl-2.1.15]# ./configure --disable-sample \
> --disable-pwcheck --disable-gssapi --disable-cram \
> --disable-digest --disable-krb4 --disable-anon \
> --with-saslauthd=/var/run/saslauthd \
> --enable-plain --enable-login
[root@localhost cyrus-sasl-2.1.15]# [ -d /usr/lib/sasl2 ] && mv /usr/lib/sasl2 /usr/lib/sasl2.orig
[root@localhost cyrus-sasl-2.1.15]# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
[root@localhost cyrus-sasl-2.1.15]# echo /usr/local/lib >> /etc/ld.so.conf
[root@localhost cyrus-sasl-2.1.15]# echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
[root@localhost cyrus-sasl-2.1.15]# ldconfig
[root@localhost cyrus-sasl-2.1.15]#
[root@localhost cyrus-sasl-2.1.15]# echo pwcheck_method: saslauthd > /usr/lib/sasl2/smtpd.conf
[root@localhost cyrus-sasl-2.1.15]# /usr/local/sbin/saslauthd -a pam
[root@localhost cyrus-sasl-2.1.15]# 
  
   六、postfix的安装和配置

  A.先停止sendmail.fedora已经默认安装了sendmail,去掉它。

          [root@localhost ruanjian]# /etc/init.d/sendmail stop
关闭 sendmail:                [失败]
[root@localhost ruanjian]# mv /usr/bin/newaliases /usr/bin/newaliases.orig
[root@localhost ruanjian]# mv /usr/bin/mailq /usr/bin/mailq.orig
[root@localhost ruanjian]# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig 
  
  B.添加用户和组  

          [root@localhost ruanjian]# groupadd -g 12345 postfix
[root@localhost ruanjian]# groupadd -g 12346 postdrop
[root@localhost ruanjian]# useradd -u 12345 -g 12345 -c postfix -d /dev/null -s /nologin postfix 
  
  C.编译postfix

          [root@mail ruanjian]# cd postfix-2.0.16
[root@mail postfix-2.0.16]# make -f Makefile.init makefiles \
> 'CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/include/mysql -I/usr/include/sasl' \
> 'AUXLIBS=-L/usr/lib/mysql -L/usr/local/lib/sasl2 -lmysqlclient -lsasl2 -lz -lm'
[root@mail postfix-2.0.16]# make install
[root@localhost postfix-2.0.16]# cd /etc
[root@localhost etc]# mv aliases aliases.orig
[root@localhost etc]# ln -s postfix/aliases aliases
[root@localhost etc]# cd postfix
[root@localhost postfix]# echo 'root: tester' >> /etc/postfix/aliases
[root@localhost postfix]# postalias /etc/postfix/aliases
[root@localhost postfix]# 


 D.配置postfix.

      1. 主要是main.cf的配置。
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:12345
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit = 51200000
virtual_minimum_uid = 12345
virtual_transport = virtual
virtual_uid_maps = static:12345

smtpd_sasl_auth_enable = yes 
#smtpd_sasl_local_domain = $myhostname 
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated permit_auth_destination reject 
smtpd_sasl_security_options = noanonymous 
smtpd_client_restrictions = permit_sasl_authenticated 
broken_sasl_auth_clients = yes 

2. mysql_virtual_alias_maps.cf 如下

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = username

3. mysql_virtual_domains_maps.cf 如下

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

4. mysql_virtual_mailbox_maps.cf 如下

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
 
  
  E.建立

  [root@localhost root]# mkdir /usr/local/virtual
  [root@localhost root]# chown -R postfix:postfix /usr/local/virtual
  [root@localhost root]# chmod -R 751 /usr/local/virtual

  七、测试端口25

  A. mysql> use postfix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> show tables;
+----------+
Tables_in_postfix
+----------+
alias      
domain      
mailbox     
+----------+
3 rows in set (0.00 sec)
 
mysql> INSERT INTO alias (username,goto) VALUES
 ('postmaster@lansemail.com','tester@lansemail.com');
Query OK, 1 row affected (0.08 sec)
 
mysql> INSERT INTO domain (domain,description) VALUES
('lansemail.com','local:'); Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO mailbox
(username,password,home,maildir,name,domain,create_date,create_time)
 VALUES('tester','$1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/','/usr/local/virtual/
','tester@lansemail.com/','tester','lansemail.com','2003-11-19','21:24:00')
; Query OK, 1 row affected (0.03 sec)
 
mysql> select * from mailbox
  -> ;
+----+-----+---+----+-----+----+----+--+----+--+-+-+----+--
----+-------+----------+----+
userid username password             
home         maildir       
name  uid  gid  quota domain    
create_date create_time change_date change_time
last_access passwd_lastchanged status
+----+-----+------------------+-----------+------------+----+----
+----+----+--------+-------+-------+-------+-------+-------+----------+----+
     tester  $1$pi.WVgBx$a3dUCzBnbY76jnZlqWQCQ/ /usr/local/virtual/
tester@lansemail.com/ tester 12345 12345     lansemail.com 2003-11-19 
21:24:00   0000-00-00  00:00:00        0          0    1
+----+-----+------------------+-----------+------------+----
+----+----+----+--------+-------+-------+-------+-------+-------+----------+----+
1 row in set (0.11 sec)
 
mysql> 

  这里用的username为tester,只是用来测试端口用的,正式使用一定要用全名tester@lansemail.com.
否则信件收不到,信息如下

  无法到达以下收件人:

   'tester@lansemail.com',时间为 21/11/2003 13:05
      450 <tester@lansemail.com>: User unknown in local recipient table

  B.[root@localhost postfix]# telnet localhost 25


Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix
ehlo local host
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN OTP
250-AUTH=LOGIN PLAIN OTP
250-XVERP
250 8BITMIME
auth plain dGVzdGVyAHRlc3RlcgB0ZXN0cHc=
235 Authentication successful
quit
221 Bye
Connection closed by foreign host.
[root@localhost postfix]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix
ehlo localhost
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN OTP
250-AUTH=LOGIN PLAIN OTP
250-XVERP
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdGVy  -->username: tester(用printf 'tester' mmencode取得。)
334 UGFzc3dvcmQ6
dGVzdHB3  -->password: testpw
235 Authentication successful
quit
221 Bye
Connection closed by foreign host.
[root@localhost postfix]# 


 八、Courier-IMAP Install 

  A. 先在普通用户下

#./configure -without-authpwd -without-authpam
-without-authuserdb -without-authshadow 
-without-cram -without-chkpw -without-ldap -without-pgsql -without-authdaemon 
-without-authcustom -with-authmysql 
#make 
#make check 
#su root
#make install 
#make install-configure 

  B.修改authmysqlrc,这里是简单的

#DEFAULT_DOMAIN domain.tld
MYSQL_CRYPT_PWFIELD password
MYSQL_DATABASE postfix
MYSQL_GID_FIELD '12345'
MYSQL_HOME_FIELD '/usr/local/virtual'
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
#MYSQL_PORT 3306
#MYSQL_QUOTA_FIELD quota
MYSQL_SERVER localhost
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_UID_FIELD '12345'
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox
#MYSQL_WHERE_CLAUSE status 

  C. [root@localhost root]# /usr/lib/courier-imap/bin/maildirmake

/usr/local/virtual/tester@lansemail.com
[root@localhost root]# chmod -R
700 /usr/local/virtual/tester@lansemail.com
[root@localhost root]# chown -R
postfix:postfix /usr/local/virtual/tester@lansemail.com
D. 启动courier-imap
[root@localhost root]# /usr/lib/courier-imap/libexec/pop3d.rc start
[root@localhost root]# /usr/lib/courier-imap/libexec/imapd.rc start
[root@localhost root]# pstree grep courier
   -2*[courierlogger]
   -2*[couriertcpd]
[root@localhost root]# netstat -an grep LISTEN
tcp    0   0 0.0.0.0:32770      0.0.0.0:*    LISTEN
tcp    0   0 127.0.0.1:32771     0.0.0.0:*    LISTEN
tcp    0   0 0.0.0.0:3306      0.0.0.0:*    LISTEN
tcp    0   0 0.0.0.0:110       0.0.0.0:*    LISTEN
tcp    0   0 0.0.0.0:143       0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:111       0.0.0.0:*    LISTEN
tcp    0   0 0.0.0.0:22       0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:631      0.0.0.0:*    LISTEN
tcp    0   0 0.0.0.0:25       0.0.0.0:*    LISTEN 

  九、测试端口110

[root@localhost root]# telnet localhost 110 Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user tester
+OK Password required.
pass testpw
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
.
quit
+OK Bye-bye.
Connection closed by foreign host.
[root@localhost root]# 

  十、一切ok了,用你的outlook试试。

记住,添加用户邮箱,一定要用全名。再去找个webmail吧。

 

上下文章:

 

上一篇文章: 构建邮件服务器病毒防护系统 下一篇文章: 用WebEasyMail架构Web邮件服务器(3)

相关文章:

  • 用端口碰撞技术实现服务器远程管理
  • 以MDaemon为例解释邮件服务器的安全设置
  • 如何作邮件交换记录
  • 用Windows Server 2003架设小型邮件服务器
  • 用CMailServer打造邮件服务器

相关软件:

  • 搜易邮件地址扫描器(EmailScanner) V3.5
  • 北信源VRV 网络服务器端病毒库 90e
  • 勤哲Excel服务器 2005 V6.0 企业版客户端
  • 勤哲Excel服务器 2005 V6.0 企业版服务器端
  • 勤哲Excel服务器 2005 V5.8.3 完整标准版
  • 勤哲Excel服务器 2005 V6.0 标准版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

网络技术分类导航

  • 局域网专栏
  • 病毒快报
  • 网络安全
  • 组网教程
  • WEB服务器架设与维护
  • FTP服务器架设与维护
  • DNS服务器架设与维护
  • 邮件服务器架设与维护

本类经典文章推荐

  • 如何作邮件交换记录
  • 用Windows Server 2003架设小型邮...
  • 用CMailServer打造邮件服务器
  • Server 2003中为SNMP服务配置网络...
  • 你的email服务器准备好应对账号搜...
  • 个人SMTP服务器的配置
  • 教你如何使用Procmail 过滤mail病...
  • Sendmail邮件服务器快速指(二)
  • 教你用QMailadmin达出QMail邮件账...
  • 教你三分钟打造反垃圾邮件服务器

邮件服务器架设与维护阅读排行

  • 企业Sendmail邮件服务器的创建(4)
  • 利用twig架设WebMail系统(2)
  • 配置你的第一台e-mail服务器(1)
  • 创建企业级Internet邮件服务器(2)
  • 使用Exchange构筑小型局域网电子邮...
  • 配置你的第一台e-mail服务器
  • 创建企业级Internet邮件服务器
  • 建立邮件服务器:概述(4)
  • 利用twig架设WebMail系统(1)
  • 在Fedora上建立自己的邮件服务器

网络技术阅读总排行

  • 网络解惑:找回消失的本地连接
  • 教你如何通过路由器来控制上网
  • 网卡故障排除技巧详解
  • FlashFTP教程
  • 网上邻居十大经典应用技巧
  • 如何有效建立Win2000 VPN服务器
  • 经济实惠:组建P2P电影服务器
  • 查找局域网络中的故障技巧
  • 南阳信息港被黑案告破!
  • 小区宽带主要常见故障解决办法

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有