安装postfix的方法
简介
这份说明的目标是告诉你如何在企业环境下为Postfix邮件服务器作基本的设置。这份说明的主要目的是教会你进行Postfix邮件服务器的基本配置以使其拥有IMAP与POP3功能。但是,你无法在这份说明中学到在Postfix邮件服务器中集成像病毒过滤及垃圾邮件过滤等高级的功能的方法。
这份说明是针对刚开始使用Postfix的用户提供一个基础的认识。其它的高级指南是[:PostfixVirtualMailBoxClamSmtpHowto:Postfix - Postfix 虚拟邮箱和病毒过滤指南]以及[:PostfixCompleteVirtualMailSystemHowto:Postfix - Postfix 完整虚拟邮件系统指南]。如果你是一个 Postfix 的新手,但希望使用那些高级功能的话,你应当事先了解本说明。
安装提示 本指南提供的安装方法,Postfix通过网络来发送及接收邮件并将它们存入用户邮箱中,用户可以通过Courier IMAP 或者 POP3 服务器来回复他们的邮件。用户验证是由 Courier Authdaemon 这个守护进程来完成的。下面的图片表现了这个过程。
Postfix的结构
构件
下面的图片展现了主要的Postfix系统组件,以及它们之间的关键信息流。
黄色椭圆是邮件程序。
黄色方框是邮件队列或文件。
蓝色方框是查找表。
在大方框中运行的程序是由Postfix主驻留守护进程控制的。
大方框中的数字是Postfix邮件系统的属性。
接收邮件
当Postfix邮件服务器收到一封新消息的时候,它将首先被放入接收队列中。下面的图表展示了新邮件处理的主要组件。
邮件是在本地发送的。Postfix邮件发送程序将首先调用邮件丢弃程序将邮件丢弃到“回收站”目录下,在那里,邮件又将被 邮件发送 进程所处理。这个进程执行一些完整性检查,以保护Postfix邮件服务器的工作。
邮件是来自网络的。PostfixSMTP 服务器将接收这些邮件并进行完整性检查,以保护Postfix邮件服务器的工作。
邮件是由Postfix系统自己生成来返回无法传送的返回邮件给发送者。[bounce or defer]进程处理该消息。
邮件被[本地传输代理]转发时,或是通过一个在系统级的别名数据库中的条目,或者通过一个每个用户自己的[.forward]文件中的条目。这被一个没有标签的箭头指明。
邮件由Postfix服务器自己在内部生成,为了向邮件管理员[通知]这个问题(这条路径也被一个没有标签的箭头指明)。Postfix服务器能够配置来向邮件管理员通知SMTP协议的问题,[UCE] 策略的问题,等等。
[cleanup] 守护进程完成对于新邮件处理的最後阶段。它添加了缺失的From:和其他的邮件头信息,将地址重写成标准的user@fully.qualified.domain 格式,并且从邮件头有选择性的展开收到邮件的地址。cleanup守护进程将处理作为一个简单的队列插入到incoming队列,并且通知[|队列管理员]新邮件到达。cleanup守护进程能够配置来在查询[canonical]和 [virtual]表的基础上转换地址。 在cleanup守护进程的请求到来时,[trivial-rewrite]守护进程将地址重写成标准的 user@fully.qualified.domain 形式。
安装 Postfix
在安装中假定你的域名是 'yourdomain.com',并且它有一个有效的 MX 记录叫做'mail.yourdomain.com'。请一定记得将这份指南中的'yourdomain.com'替换成你的真实的域名。并且我还假定你知道”MX记录”是什么。要找出MX你需要在终端中输入
dig mx yourdomain.com
安装 postfix
sudo apt-get install postfix
安装mailx软件包来用做mail命令邮件工具的程序。安装这个包来安装mail命令。
sudo apt-get install mailx
测试默认的安装
这样添加一个用户。
sudo useradd -m -s /bin/bash fmastersudo passwd fmaster
用下面的命令来测试默认的安装。
telnet localhost 25
Postfix将出现下面这样的终端提示,这样你就可以输入一些SMTP命令。
Trying 127.0.0.1...Connected to mail.fossedu.org.Escape character is '^]'.220 localhost.localdomain ESMTP Postfix (Ubuntu)
在Postfix的提示符下面输入这些代码段。
ehlo localhostmail from: root@localhostrcpt to: fmaster@localhostdataSubjet: My first mail on PostfixHi,Are you there?regards,Admin. (Type the .[dot] in a new Line and press Enter )quit
检查'fmaster'的邮箱。
su - fmastermail
当你输入mail}命令的时候,终端的输出应该像下面这样。
Mail version 8.1.2 01/15/2001. Type ? for help."/var/mail/fmaster": 2 messages 2 new>N 1 root@localhost Mon Mar 6 12:49 13/479 Just a test N 2 root@localhost Mon Mar 6 12:51 15/487 My first mail&
你会观察到邮件被按照数字编号索引了,因此你可以输入你想看的邮件的编号。例如输入'2'来阅读第二封信。阅读完毕使用”q”命令退出。邮件会被写到用户主目录下面的一个叫做'mbox'的文件中。在我们的例子中是'/home/fmaster/mbox'。
mbox型的邮箱中的所有消息被连接并且储存成一个单一的文件。每一个消息的开始被头5个字母是”From”的那一行标示出来,并且每一封消息的末尾有一个空行。
设置Postfix支持Maildir型的邮箱
Maildir 是一个邮件池的格式,这种邮件格式不需要文件锁定来保证消息的完整性,因为邮件以一个特有的名字被保存在一个个单独的文件中。一个Maildir是一个包含3个叫做tmp, new和curd的子目录的目录(常常以Maildir命名)。这些子目录应该在同一个文件系统中。
另一个使用Maildir格式的邮箱的理由是Courier IMAP/POP3服务器只支持Maildir格式的邮箱。
在[这里]能够得到更多关于Maildir的信息。
sudo vi /etc/postfix/main.cf
加入下面的代码:
home_mailbox = Maildir/
在' mailbox_command = procmail -a “$EXTENSION” '那一行前面加上一个”#“将其注释掉。
重启 Postfix 使改变生效。
sudo /etc/init.d/postfix restart
再一次测试你的安装。
安装 courier IMAP 和 POP3
sudo apt-get install courier-popsudo apt-get install courier-imap
为postfix增加本地域
sudo vi /etc/postfix/main.cf
将你的域名增加到 'mydestination'。增加完成後它看起来应该象这样:
...mydestination = mail.fossedu.org, localhost.localdomain, localhost, yourdoamin.com...
将你的本地网络增加到:
sudo vi /etc/postfix/main.cf
我假定你的本地网络是 192.168.1.0/24 并且将你的本地网络加入到mynetworks}。完成後它看起来应该像这样:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
使Postfix从因特网上接收邮件
使用下面的命令在'/etc/postfix/main.cf'增加'inet_interfaces = all'
sudo vi /etc/postfix/main.cf
最後重启Postfix;
sudo /etc/init.d/postfix restart
使用下面的代码再一次测试你的安装是否成功:
telnet mail.yourdomain.com 25ehlo yourdmain.commail from: root@yourdomain.comrcpt to: fmaster@yourdomain.comdataSubject: My first mail for my domainHi,Are you there?regards,Admin. (and Enter In a new Line)quit
检查'fmaster'的邮箱
su - fmastercd Maildir/newls
现在你将看到邮件在一个个单独的文件中了。
测试 Courier POP3
在终端中输入:
telnet mail.yourdomain.com 110
使用下面示例代码来测试。注意在你自己的环境中做适当的变通。输出应该像下面这样:
Connected to mail.yourdomain.com (69.60.109.217).Escape character is '^]'.+OK Hello there.
在Courier POP3服务器的提示符下面输入下面的代码段。我假定你能够看情况输入'+OK'後的行。
user fmaster+OK Password required.pass password+OK logged in.quit
测试 Courier IMAP
在终端输入这些:
telnet mail.yourdomain.com 143
使用下面的示例代码来测试。注意在你自己的环境中做适当的变通。输出应该像下面这样:
*OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS XCOURIEROUTBOX=INBOX.Outbox] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution information.
在Courier POP3服务器的提示符下面输入下面的代码段
a login fmaster password
a OK LOGIN Ok.
a logout
本地的别名数据库
当邮件要被本地传送时,本地传送代理通过别名数据库来接受每一个名字。这个映射不对邮件头中的地址生效。本地的别名主要是用来实现收发列表,或者直接的将标准的别名例如 postmaster映射成真实的地址。这个表也可用来映射Firstname.Lastname的地址到登录名。
Postfix默认开启别名查询,你可以在main.cf文件中看到这些代码:
为一个账号创建别名
下面的代码讲述了怎样设置一个别名。这个步骤是可选的,因为我们稍後会配置虚拟邮件域名的。加入这个步骤的目的是保证你在需要的时候明白如何配置。
建立一个用户
sudo useradd -m -s /bin/bash sysadminsudo passwd sysadmin
编辑别名表
使用下面的命令打开别名表:
sudo vi /etc/aliases
加入下面的代码:
fmaster: sysadmin
使用下面的代码让你的改动生效:
sudo newaliases
发送一封邮件到'fmaster'并检查'/home/sysadmin/Maildir/new'文件夹中的邮件来测试你的改变是否生效。
各个用户的 .forward 文件
用户可以在他们主目录下的.forward文件中控制他们自己的邮件传输。这个文件的语法和系统的别名是基本一样的,除了查询键和colon没有出现。
在这里我举一个例子:
假定你需要将到达用户sysadmin的所有邮件传输到另一个用户,就象这样做:
su - sysadmintouch .forward
然後打开.forward文件。
vi .forward
加入下面的代码
fossedu@gmail.com
记得在这个练习中使用真实的email地址。
现在发送一封邮件到'sysadmin'就会被转发到fossedu@gmail.com。
Postfix单独域名和Linux系统用户的虚拟别名
用这个方法,每一个主机域可以有它自己的信息,比如邮件地址。但是,这种方法仍然使用Linux系统账户来进行本地的邮件传送。
使用虚拟别名域名,每个别名被映射到一个本地的unix系统账户或一个远程的邮件地址上。下面的例子显示了如何对fossedu.org和linuxelabs.com域使用这个机制。
打开main.cf文件:
sudo vi /etc/postfix/main.cf
添加下面的代码段:
virtual_alias_domains = fossedu.org linuxelabs.comvirtual_alias_maps = hash:/etc/postfix/virtual
编辑文件'/etc/postfix/virtual':
加入Linux系统账户:
sudo useradd -m -s /bin/bash sigirisudo useradd -m -s /bin/bash kala
为上面的用户设定密码。
sudo passwd sigirisudo passwd kala
sudo vi /etc/postfix/virtual
增加下面的代码段:
info@fossedu.org sigiriinfo@linuxelabs.com kala
建立一个数据库映射:
sudo postmap /etc/postfix/virtual
postmap是一个将'/etc/postfix/virtual'转换成'/etc/postfix/virtual.db'即伯克利DB格式的工具,以便Postfix能够更快的访问这个文件。
重启Postfix使修改生效:
sudo /etc/init.d/postfix restart
发送邮件到 info@fossedu.org 和 info@linuxelabs.com 这些邮件都会进入相应的sigiri和kala的邮箱。
介绍 Postfix是一个邮件传输客户端(MTA),它也是Ubuntu中默认的邮件传输客户端.它是Ubuntu的main软件库中的一个软件.这意味着它拥有安全更新.这份指南告诉你如何安装及配置postfix并将其设置成一个使用安全连接的SMTP服务器.
安装 安装带SMTP-AUTHT和TLSR的Postfix使用如下的命令:
apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail
配置
运行:
dpkg-reconfigure postfix
当要求提供相关信息时输入如下的信息(如果你拥有一个域名的话,将server1.example.com替换成你自己的域名):
* Internet Site
* NONE
* server1.example.com
* server1.example.com, localhost.example.com, localhost
* No
* 127.0.0.0/8
* Yes
* 0
* +
* all
运行下列命令:
### Configure Postfix to do SMTP AUTH using SASL (saslauthd) postconf -e 'smtpd_sasl_local_domain =' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'smtpd_sasl_security_options = noanonymous' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination' postconf -e 'inet_interfaces = all' echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf ### Generate certificates to be used for TLS encryption and/or certificate Authentication mkdir /etc/postfix/ssl cd /etc/postfix/ssl/ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 ### Configure Postfix to do TLS encryption for both incoming and outgoing mail postconf -e 'smtpd_tls_auth_only = no' postconf -e 'smtp_use_tls = yes' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtp_tls_note_starttls_offer = yes' postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' postconf -e 'smtpd_tls_loglevel = 1' postconf -e 'smtpd_tls_received_header = yes' postconf -e 'smtpd_tls_session_cache_timeout = 3600s' postconf -e 'tls_random_source = dev:/dev/urandom' postconf -e 'myhostname = server1.example.com'
/etc/postfix/main.cf 这个文件应当是如下的内容:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.example.com, localhost.example.com, localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
重启postfix守护进程:
/etc/init.d/postfix restart
验证
使用saslauthd来执行验证
我们应当修改一些内容来令saslauthd正常工作.因为Postfix需要将根目录更改为/var/spool/postfix ,我们应当将那些使用不正确根目录的目录更改为正确的.(例如:将/var/run/saslauthd 修改为/var/spool/postfix/var/run/saslauthd):
首先,我们需要编辑/etc/default/saslauthd 以激活 saslauthd . 请将 START=yes 之前的 # 号去掉并添加 PWDIR, PARAMS 和 PIDFILE 行:
# This needs to be uncommented before saslauthd will be run automatically START=yes PWDIR="/var/spool/postfix/var/run/saslauthd" PARAMS="-m ${PWDIR}" PIDFILE="${PWDIR}/saslauthd.pid" # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also include # "shadow" or "sasldb", like this: # MECHANISMS="pam shadow" MECHANISMS="pam"
注 : 如果你喜欢的话,你可以使用”shadow”来替换”pam” .这将使用MD5生成的哈希值来传输以得到更高的安全性. 需要验证的用户名及密码将是那些你服务器上的系统上的.
下一步: 我们更新 dpkg 中 /var/spool/portfix/var/run/saslauthd 的状态. saslauthd 的启动脚本需要一个特定的用户权限来建立一个新的目录.
dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd
最後,启动saslauthd:
/etc/init.d/saslauthd start
测试
要查看SMTP-AUTH 及TLS能否正常工作请使用如下命令:
telnet localhost 25
在您建立了与您的postfix邮件服务器类型的连接之後
ehlo localhost
如果你看到如下行
250-STARTTLS 250-AUTH
在其它内容之上,表明一切正常.
输入 quit 以返回系统.
其它 Postfix 指南
这些指南将从基本层面到高级层面告诉你如何配置Postfix邮件服务器.
Postfix 基本设置指南
Postfix基本设置指南将告诉你Postfix的概念以及你如何进行Postfix的基本设置并使其工作.如果你是Postfix的新手,建议你首先使用这份指南.
Postfix 虚拟邮箱和病毒过滤
Postfix虚拟邮箱和病毒过滤指南将告诉你如何设置通过非linux帐户来验证的虚拟邮箱,它使用e-mail地址及Dovecot POP3/IMAP 服务器执行验证.以及如何使用 ClamSMTP 反病毒软件来过滤接收及发送邮件中的已知病毒.
Postfix 完全解决方案 Postfix 完整虚拟邮件系统指南将帮助你管理ISP级别的成千上万的虚拟域名,或在一个大型组织中帮助你管理成百上千的邮件域名.当你寻找一份与下述内容有关的完全解决方案时建议你阅读这份指南:
* 基于网页的系统管理
* 无限制数量的域名
* 不需要shell帐号的虚拟邮件用户
* 特定域名的用户名
* 邮箱引用
* 通过网页来使用邮箱
* 通过网页形式来更改用户密码
* IMAP及POP3支持
* 自动回复
* 通过SMTP验证以实现安全传递
* 通过SSL以实现传输层安全传输
* 强垃圾邮件过滤
* 反病毒过滤
* 日志审计
有关于“安装postfix的方法”内容,爱站技术频道小编都给大家展示出来了,如果你对此还有不解的地方可以来咨询小编。更多精彩的技术咨询,请来js.aizhan.com翻阅。