当前位置: > Linux服务器 > mail >

linux下Mail服务器架设攻略

时间:2016-05-27 19:47来源:linux.it.net.cn 作者:IT

Linux下Mail服务器架设攻略
一. 安装Sendmail。

    完全安装Red Hat Linux 9.0时,Sendmail就会自动内置,版本号为8.12.8-4。如果你不确定Linux是否已经安装有sendmail,可以输入以下命令查看:

    [root@ahpeng root] rpm –qa grep sendmail

    如果确定没有安装,请在图形界面下依次选择单击“主菜单-系统设置-添加删除应用程序”,然后在打开的“软件包管理”窗口里选中“邮件服务器”选项,点“更新”后按照提示安装即可。

    另一种办法是:直接插入Linux第1张安装光盘,选择/RedHat/RPMS目录下的sendmail-8.12.8-4.i386.rpm安装包,之后运行[root@ahpeng RPMS] # rpm -ivh sendmail-8.12.8-4.i386.rpm即可开始安装,再用此方法在第3张安装光盘的同目录下依次安装sendmail-cf.8.12.8-4.i386.rpm、sendmail-doc. 8.12.8-4.i386.rpm。

二. 启动Sendmail服务系统。

    笔者建议使用带参数的Sendmail命令控制邮件服务器的运行:[root@ahpeng root]# 
sendmail -bd –q12h,后跟的参数解释如下:
    -b:设定Sendmail服务运行于后台。
    -d:指定Sendmail以Daemon(守护进程)方式运行。
    -q:设定当Sendmail无法成功发送邮件时,就将邮件保存在队列里,并指定保存时间。上面的12h表示保留12小时。
    此外,要检测Sendmail服务器是否正常运行,可以使用命令行:[root@ahpeng root]   # /etc/rc.d/init.d/sendmail status。

三. 配置Sendmail。

    sendmail.cf的配置语法比较难懂,一般资料上都是采用m4宏处理程序来生成所需的sendmail.cf文件(使用m4编译工具一般不容易出错,还可避免某些带有安全漏洞的宏对服务器造成的破坏)。其配置文件位于/etc/mail/sendmail.cf,在创建的过程中还需要一个模板文件,Linux自带有一个模板文件,位于/etc/mail/sendmail.mc。故可以直接通过修改sendmail.mc模板来达到定制sendmail.cf文件的目的,而不必去死啃哪些难理解的配置命令。配置步骤为:

    第一步:用模板文件sendmail.mc生成sendmail.cf配置文件,并导出到/etc/mail/目录下,使用命令行为:m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    第二步:再用[root@ahpeng root] /etc/rc.d/init.d/sendmail restart命令行重启sendmail。
至此,邮件服务系统配置完成,已经正常工作。接下来就是创建具体的帐户了。

四. 建立电子邮件新帐号。

    此步骤相对简单,只需在Linux里新增一个用户即可。依次进入“主菜单-系统设置-用
户和组群”选项,接着打开“Red Hat用户管理器”对话框,点“添加用户”按钮,在接着出现的“创建新用户”窗口中输入用户名及密码即可,如图所示:

 


创建mail使用帐号

 

         
   命令行方式为:[root@ahpeng root]#adduser mailA -p Pass,表示创建了一个mailA的帐号,密码为Pass。

五. 限制单个用户邮箱容量。

    如果对用户的邮件容量不加限制,服务器的硬盘是不堪重负的。这可以使用“邮件限额”功能来实现:因为电子邮件的暂存空间是位于/var/spool/mail目录下的,所以只需通过磁盘配额设定每一个邮件帐户在此目录下能使用的最大空间即可。

六. 单一用户设定多个邮件地址。

    使用别名(alias)可以解决这个问题。别名是sendmail最重要的功能之一。它在aliases这个文本文件中定义,aliases文件的位置由sendmail.cf指定,一般位于/etc目录下。比如前面我们建立的mailA用户要拥有2个邮件地址:mailA@yourdomain.com和mailB@yourdomain.com,可以这样设置:

    首先,新增一个账号mailC,然后用Linux的文本编辑器打开/etc/aliases,在里面加上:dearpeter: mailC和truepeter: mailC这两个命令行;然后在命令窗口运行newaliases命令,以要求Sendmail重新读取/etc/aliases文件。如果正确无误,会出现一段回应消息,表示配置成功。这样就可以使用2个地址给mailC发信,而mailC则只需用其中一个账号就可接收寄给以上2个地址的所有邮件。

    经过以上步骤后,应该就可以用Outlook Express正常发送邮件了,但这时还不能用Outlook Express从服务器端收取邮件的,因为sendmail默认状态并不具备POP3功能,我们还得自己安装并启用它。

    1. POP3(IMAP)服务器安装。

    第一步:用以下命令行检查系统是否安装:
    [root@ahpeng root]# rpm -qa imap
    imap-2001a-18

    第二步:插入第2张安装光盘,使用下面的命令行开始安装:
    [root@ahpeng root]#cd /mnt/cdrom/RedHat/RPMS
    [root@ahpeng root]#rpm -ivh imap-2001a-18.i386.rpm

    2. 启用POP3(IMAP)服务。

    POP3服务:请先修改/etc/xinetd.d/ipop3文件,将其中的“disable=yes”改为“disable=no”后保存;然后重新启动xinetd程序来读取这个修改过的配置文件,使之生效:
    [root@ahpeng root]#/etc/rc.d/init.d/xinetd reload

    启动IMAP服务的步骤跟POP3一样,只是IMAP的配置文件为/etc/xinetd.d/imap罢了。经过这些折腾,你的Linux已经是一台邮件服务器了!大家学会了吗?

 

 

 

[root@mail mail]# m4 sendmail.mc >sendmail.cf
sendmail.mc:74: m4: Cannot open /usr/share/sendmail-cf/feature/relay.hot.mail.m4
: 没有那个文件或目录

 


install the "sendmail-cf" package

sendmail + qpopper 邮件服务器已经安装成功
 
 

我的sendmail + qpopper 邮件服务器已经安装成功。下面是我在安装过程中碰到的问题以及解决过程。

我在自己公司的一台PC上安装了红帽子高级服务器版,想用它来做电子邮件服务器。其主要目的是公司内部可以用它来发送内部和外部邮件,可以公司内部互发互收邮件,但是由于没有正式域名,所以也就不能收到外部邮件(我原来想用www.3322.org提供的免费域名来做一个域然后用这个免费的域名来做,但是另一个伙计已经做了一个NT的域。就算了。没做。不过我想肯定可以做成的)。
首先配好DNS服务器,让它的MX记录指向这台linux机器。

安装邮件软件:
sendmail rpm 包(系统自带的)(分别为:sendmail ,sendmail-cf两个包),procmail包(也是系统自带的), qpopper 网上下载的qpopper4.05.tar.gz去北大天网搜。

然后安装。
rpm -ivh procmail....rpm
rpm -ivh sendmail...rpm
rpm -ivh sendmail-cf..rpm

tar zxvf qpopper4.0.5.tar.gz
cd qpopper目录
./configure --enable-log-login --enable-server-mod --enable-fast-update --enable-shy --enable-spool-dir=/var/spool/mail --enable-specialauth

make 
make install

到/etc/xinetd.d目录下创建一个文件
vi pop3
内容如下:
service pop3
{
socket_type=stream
protocal = tcp
wait = no
user = root
server = /usr/local/lib/popper
server_args = qpopper -s -T80
port = 110
}
存盘退出
重启/etc/rc.d/init.d/xinetd restart

进入目录/etc/mail/
vi sendmail.mc
找到 DAEMON_OPTIONS 行前面加上dnl 表示去掉此功能

存盘退出
m4 sendmail.mc sendmail.cf
将sendmail.cf 拷到/etc目录下。这是sendmail默认的配制文件目录
进入目录/etc/并vi sendmail.cf
查找DS记录,并在其下加入:Cw host.domain.com domain.com
保存记录
这样就可让发送到domain.com 的信发送到host.domain.com上了。当然你的DNS服务器要将其MX记录指向这个host.domain.com
重启sendmail
一切OK了.
用outlook可以在内部收外部的邮件,可以用这台机向外发送邮件。也可在自己内部网络中发送本地网络邮件。
其余应该还可以利用那个www.3322.org 提供的免费域名来做一个名副其实的电子邮件服务器了,也可以加入smtp认证。这些我都不用写了。把前面这个第一关弄明白了。后面的都好说了。

我碰到的问题:
1、在linux机器上可以发送内外部邮件,但是在别的98机器上用outlook不能发送邮件。提示套接字错误。那可能是sendmail只在127.0.0.1 上监听。用netstat -an|grep 25可以看看它在哪个网络接口上。
如果是在127.0.0.1上可直接修改/etc/sendmail.cf文件中的O DaemonPortOptions 中的Address这你想要的网络接口,但这样的话,你在其他机器上将不能外发邮件,在此linux机器上是可以发。如果你不想这样的话。也可修改按上面的将sendmail.mc文件中的DAEMON_OPTONS注掉。重新生成cf文件
2、千万要注意sendmail的默认配制文件在/etc/sendmail.cf中。
3、如果不想你的服务器为所有的主机转发邮件。那么可在/etc/mail/access文件加入你想用来转发邮件的主机地址或者子网。
然后 make hash access.db < access
重启sendmail即可。

 

 

 一.安装sendmail

  如果你在安装LINUX的时候,选择了E-MAIL服务,sendmail就已经安装在LINUX系统中了,并且已经作了一些最基本的设置。假如你在安装时没有选择,或者你需要升级sendmail就可以使用以下方法进行。

  1.RPM包安装方式

  1) 首先在光盘上或Internet上找到下面几个RPM包(Redhat Linux安装光盘都有):

  sendmail-8.9.3-10.i386.rpm sendmail可执行文件

  sendmail-cf-8.9.3-10.i386.rpm sendmail.cf生成器

  sendmail-doc-8.9.3-10.i386.rpm sendmail.cf文档

  2) 然后使用以下命令安装或升级:

  安装: rpm –ivh sendmail-8.9.3-10.i386.rpm

  升级: rpm –Uvh sendmail-8.9.3-10.i386.rpm

  2.重新编译源码方式

  1) 首先取得最新版本的源代码:http://www.sendmail.org/或ftp://ftp.dlut.edu.cn/pub/unix/mail/sendmail/,将它存放在/usr/local目录下。

  2) 执行以下命令,解压缩:

  cd /usr/local

  tar –zxvf sendmail-8.9.3.tar.gz

  这样就会在/home目录下建立一个sendmail-8.9.3目录:

  /usr/local/sendmail-8.9.3/README

  /usr/local/sendmail-8.9.3/src

  /usr/local/sendmail-8.9.3/cf

  /usr/local/sendmail-8.9.3/doc

  3) 编译:由于sendmail自己带了一个编译程序Build,所以不用make命令:

  cd /usr/local/sendmail-8.9.3/src

  ./Build install

  二. 用sendmail构建一个E-Mail服务器

  因为sendmail的功能强大,配置相当繁琐,无法在一篇文章说完这个内容。我们在纛举一个架设供一个公司使用的Internet E-Mail服务器为例进行讲述。以下的设置也能运用在较大的电子邮局应用中,但是随着的用户数的增多,将会使得整个邮局的性能有所下降,这时也就相应地要进行更加深入的配置工作。有兴趣的读者可以到本网站《在线培训》栏目中的翻译作品子栏目中,阅读笔者翻译的《Sendmail》一书。

  下面我们就开始吧!

  1.将sendmail配置为守候进程(daemon)启动

  如果你在安装LINUX的时候,选择了E-Mail服务。那么,sendmail就已经成为一个守候进程启动了。所谓的守候进程,指的是它就象DOS操作系统中的常驻内存程序一样,运行后,它们在后台侦听,当需要它进行服务的时候,它就完成特定的功能和服务。在LINUX系统中有许许多多的服务就是以守卫进程的方式启动着的。

  你可以使用以下命令来确认sendmail是否已经启动。

  ps –axuw|grep sendmail

  如果启动了sendmail,那么这个命令将显示出它的相关信息。否则将没有任何提示地回到命令行。如果没有启动,你可以手动启动。

  如果你想让sendmail自动在系统启动时启动,那么就在/etc/rc.d/rc.net文件中加上以下几行代码。

  if [-f /usr/lib/sendmail ]; then

  (cd /usr/spool/mqueue;rm –f if *)

  /usr/lib/sendmail-bd-qlh;echo –n ‘sendmail’>/dev/console

  fi

  2.设置sendmail.cf

  sendmail.cf是sendmail的配置文件。一般说来在安装了LINUX系统之后,它将自动生成一个适合本系统使用的sendmail.cf文件,而且在sendmail.8.9.3/cf目录下还有许多适应各种系统的sendmail.cf的文件样本,根据文件名也可以判断出它们所适用的场合。可以选择它们替换原有的sendmail.cf文件。也就是将它们复制到/etc目录中去,覆盖掉原来的sendmail.cf文件。

  而且sendmail还提供了一个sendmail.cf的生成器m4,它通过一系列的人机对话来生成一个用户定制的sendmail.cf文件。具体的用法可以阅读m4的帮助文档。在此就不再详述。

  3.开启SMTP、POP端口

  在Internet中,我们采用POP端口提供接收邮件服务,采用SMTP端口提供发送邮件服务。也就是说,客户端的邮件发送、接收系统在要发送邮件的时候,就与电子邮局的SMTP端口连接;当要接收邮件的时候,就与电子邮局的POP端口连接。

  而一般在所有的类UNIX系统中,SMTP端口默认是打开的,而POP端口在默认状态下是关闭的,我们必须将它打开。

  1) 用root(超级权限)登录到服务器上;

  2) 编辑文件/etc/inetd.conf;

  3) 找到描述POP端口的语句;

  #pop2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d

  #pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d

  前面的#号代表这一行是注释语句,不生效。

  POP2是早期的端口协议版本,我们现在一般使用的是POP3.

  4) 将POP3的描述语句那一行的注释号“#”去掉。确保POP2的那一行是注释语句。

  5) 如果没有找到,就手工补上这一行;(另外,我们还可以验证一下是否存在SMTP端口的描述语句);

  6) 存盘后退出。

  7) 运行inetd命令,使得设置生效。

  8) 用以下命令验证,看POP3端口是否打开(生效)。

  netstat –a |grep pop

  如果打开的话,可以看到以下信息:

  tcp 0 0 *:pop3 *:* LISTEN

  4.为新用户开E-Mail帐号

  其实,在LINUX中,要为一个新的用户开E-Mail帐号是十分简单的。只要在LINUX系统中新增一个用户就可以了。那么这个用户帐号和密码就是E-Mail的帐号和密码。例如,我为一个新用户test开一个E-Mail帐号。就用以下命令:

  adduser test

  passwd test

  这样,这个新用户的E-Mail地址就是:

  test@company.com

  密码当然就是帐号的密码了。

  5.为E-Mail帐号设置别名

  如果,有一些用户想使用多个E-Mail地址,是不是就要为他开多个帐号呢?如果是这样就会增加对帐号管理的难度。所以LINUX给我们提供了一种方法:设置别名。

  比如说,一个用户叫“李小东”,它想拥有以下的几个E-Mail地址:

  wdm@company.com

  wangdm@company.com

  daming@company.com

  我们就通过以下步骤来实现这样的别名设置。

  1) 以root登录服务器;

  2) 新增一个账号lxd;

  3) 编辑文件/etc/aliases;

  4) 加上两行:

  xiaodong:lxd

  tigger:lxd

  5) 存盘退出;

  6) 执行命令:

  Newaliases

  这样,发给李小东的邮件可以使用三个邮件地址,而李小东只需要使用一个E-Mail帐号:lxd@company.com就可以接收所有寄给以上三个E-Mail邮件地址的电子邮件。 本文来自:http://www.linuxpk.com/4265.html


 




(责任编辑:IT)
------分隔线----------------------------