当前位置:主页 > 邮局搭建 >

如何搭建自己的邮件服务器

0. 邮件系统介绍 邮件系统角色:MUA(邮件用户代理)、MTA(邮件传输代理)、MDA(邮件分发代理 ) MTA:一般被称为邮件服务器软件,负责接收客户端软件发送的邮件,并将邮件传输给其

admin

0. 邮件系统介绍

邮件系统角色:MUA(邮件用户代理)、MTA(邮件传输代理)、MDA(邮件分发代理 )

MTA:一般被称为邮件服务器软件,负责接收客户端软件发送的邮件,并将邮件传输给其他的MTA程序,是电子邮件系统中的核心部分。例如Exchange、 Postfix都属于MTA类软件

MUA:一般被称为邮件客户端软件,负责为用户提供发送、接收和管理电子邮件的界面。例如Outlook、Outlook Express、Foxmail等

MDA:负责在服务器中将邮件分发到用户的邮箱目录(默认情况下是/var/spool/mail/user),它并不直接面向邮件用户,而是在后台默默的工作。有时候MDA的功能可以直接集成在MTA软件中,因此经常被忽略。

rhel5默认采用sendmail做为MTA,rhel6则采用postfix,安装postfix和dovecot软件包,yum方式安装;

配置DNS服务器,在正向区数据文件中创建邮件服务器的A和MX记录

 

1. postfix安装配置

rhel6默认已经安装好了postfix,所以只需要安装dovecot即可
 

postfix服务的配置文件:/etc/postfix/main.cf

postfix系统提供了 postconf 工具可以用来辅助配置

执行 postconf ,查看当前的有效配置,如postconf “inet_interfaces”

执行 postconf -n ,查看非默认配置

执行 postconf -d ,查看默认配置

执行postconf -e ,修改自定义设置,如postconf -e “inet_interfaces = all”

#postconf -n > main2.cf

#mv main.cf main.cf.bak

#mv main2.cf main.cf

修改postfix主配置文件相关配置

 

参数解释:

  • inet_interfaces = all //设置postfix服务监听的IP地址,设置为all表示监听所有IP
  • mydomain=renet.com //设置postfix服务器使用的邮件域名
  • myhostname = mail.peixun.wlmq //设置postfix服务器使用的主机名
  • myorigin = $myhostname //外发邮件时发件人地址中的邮件域名, 指明发件人所在的域名
  • mydestination = $myhostname, $mydomain //允许投递到本地的邮件域名,可接收邮件的主机名或域名, 即您的postfix系统要接收到哪个域名的邮件
  • mynetworks //设置可转发哪些网络的邮件, postfix系统根据其值来区别用户是远程的还是本地的,这些地址和网络可以通过此MTA转发邮件至任何地方,无需进一步身份验证
  • relayhost //smarthost转发所有通过的出站邮件。通常用方括号指定,以避免MX记录查找
  • local_transport //收件地址为$mydestination的邮件的发送方式。默认情况下,设置为local:$myhostname(使用local MDA将传入的邮件发送到/var/spool/mail中的本地邮件存储位置)
  • home_mailbox = Maildir/ //设置邮件存储位置和格式,postfix支持2种最常见的邮箱存储方式(当指定的存储位置最后一个字符为“/”时,自动使用Maildir存储方式)
  • Mailbox //将同一用户的所有邮件内容存储在同一个文件中,例如 “/var/spool/mail/username”,这种方式比较古老,在邮件数量较多时查询和管理的效率较低
  • Maildir //使用目录结构来存储用户的邮件内容,每一个用户对应有一个文件夹,每一封邮件作为一个独立的文件保存,例如/home/username/Maildir/*,这种方式存取速度和效率更好,而且对于邮件内容管理也更方便

重启postfix服务

#service postfix restart

#chkconfig postfix on

2. 修改dovecot主配置文件

  • vi /etc/dovecot/dovecot.conf
  • !include conf.d/*.conf //该配置项说明conf.d下的所以conf结尾的文件均有效,注意最前面的"!"号
  • protocols = imap pop3 lmtp
  • login_trusted_networks = 192.168.0.0/24 //指定允许登录的网段地址

设置/etc/dovecot/conf.d/10-mail.conf配置文件

设置完mail_location值后,需要重启dovecot服务.

#service dovecot restart

#chkconfig dovecot on
 

可以使用mailq命令或postqueue -p命令显示已排队的所有传出邮件的列表,若要尝试再次立即发送所有已排队的邮件,可以运行postfix flush命令或postqueue -f命令;否则postfix将大约每小时尝试重新发送一次,直到邮件被接受或过期。

 

3、设置邮件用户的别名和群发列表

在/etc/postfix/main.cf文件中存在如下配置项(默认就存在,只需确认一下即可
 

aliases别名文件解释:

  • 第一行是为zhangsan邮件用户起一个别名:admin;
  • 第二行是创建一个群发列表,群发列表名叫tech,列表中包含lisi和zhangsan两个邮件账户

执行postalias或newaliases命令更新别名文件。

#postalias /etc/alias 或#newaliases

最后重启postfix服务

 

4、虚拟别名域的配置

使用虚拟别名域,可以将发给虚拟域的邮件实际投递到真实域的用户邮箱中;可以实现群发组邮递功能,即指定一个虚拟邮件地址,任何人发给这个邮件地址的邮件都将由邮件服务器自动转发到真实域中的一组用户的邮箱中。

实际虚拟域是真实域的一个别名,是通过一个虚拟别名表virtual实现了虚拟域的邮件地址到真实域的邮件地址的重定向

编辑postfix主配置文件/etc/postfix/main.cf,添加如下定义

参数解释:

第一行用来指定虚拟别名域的名称;

第二行用来指定含有虚拟别名域定义的文件路径。

编辑配置文件/etc/postfix/virtual,进行如下定义
 

参数解释:

  • 第一行的含义是将发送给虚拟域@accp.com,的邮件实际投递到真实的本地域@renet.com
  • 第二行的含义是发往虚拟域邮箱admin@accp.com的邮件将投递到邮件用户zhangsan的邮箱中
  • 第三行参数是发往虚拟域邮箱zhaopin@accp.com的邮件将投递到lisi和zhangsan的邮箱中

在修改配置文件main.cf和virtual后。要使更改立即生效,应分别执行postmap和重启postfix服务

#postmap /etc/postfix/virtual

#service postfix restart

 

5、webmail邮件界面(squirrelmail)

Webmail是指提供给邮件用户发信、收信使用的网页操作界面,通过访问邮件系统提供的WEB界面,可以和邮件客户端软件实现类似的邮件管理功能。

1)安装httpd和php相关的软件包并启动httpd服务

#yum -y install httpd

#yum -y install php-*

#service httpd start

#chkconfig httpd on

注意:要确保以下两个软件包要安装,否则用户不能通过WEB方式登录邮箱

2)释放并配置squirrelmail程序套件

将squirrelmail程序套件和中文件语言包拷贝到邮件服务器本地(如/root目录),

  • 首先将SquirrelMail解压到WEB服务器的网页文档根目录(默认是/var/www/html),并改名

# tar jxvf squirrelmail-1.4.13.tar.bz2 -C /var/www/html

# cd /var/www/html

# mv squirrelmail-1.4.13 webmail

# cd webmail

  • 然后在SquirrelMail的网页文件目录中解压释放中文语言包

# tar jxvf ~/zh_CN-1.4.13-20071220.tar.bz2

  • 创建及调整数据目录、附件目录

# mkdir -p attach data

# chown -R apache:apache attach/ data/

# chmod 730 attach/

  • 建立并调整 config.php 配置文件

# cp config/config_default.php config/config.php

# vi config/config.php

  • 从样例文件复制生成配置文件,根据需要调整相关参数(只需改动少数几个参数即可)

$squirrelmail_default_language = ‘zh_CN’; 默认语言

$default_charset= ‘zh_CN.UTF-8’; 默认字符集

$domain = ‘renet.com’; 邮件域名

$smtpServerAddress =‘127.0.0.1’; 设置发信服务器地址

$smtpPort = 25; SMTP服务器端口

$imap_server_type = ‘dovecot’; 设置IMAP收信服务器类型

$imapPort = 143; IMAP服务端口

$data_dir= ‘/var/www/html/webmail/data/’; 数据目录位置

$attachment_dir = ‘/var/www/html/webmail/attach/’; 附件目录位置

3)在浏览器中登录squirrelmail系统

开启httpd_can_sendmail布尔值为on状态

访问

WEB服务器IP或FQDN/webmail

 

6、设备SMTP的用户认证

当用户通过SMTP协议向外部邮件域发送邮件时,服务器会要求用户提供用户帐号和口令进行身份认证,只有成功通过身份认证的用户才被允许向外部发送邮件,否则将拒绝发信请求

目前,比较常用的SMTP认证机制是通过Cyrus SASL包来实现的,Cyrus SASL最大功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功能定义认证方式,并让SASL通过与邮件服务器主机的沟通从而提供认证的功能。


返回顶部