配置Postfix服务程序
的有关信息介绍如下:Postfix是一款由IBM集团出资研发的免费开源电子邮件服务程序,能够很好的兼容Sendmail服务程序,也就是说Sendmail用户可以很方便的迁移到新的服务上面,Postfix服务的收件、发件性能确实强过Sendmail服务,并且能够自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性,另外Postfix服务程序是由诸多的小模块组成,每个小模块都可以完成特定的功能,因此在今后的生产工作环境中可以灵活搭配它们。详情请关注《linux就该这么学》。
安装Postfix服务程序,当然这一步在红帽RHEL7系统中是多余的,刘遄老师把步骤写下来的目的是为了让同学们读完这本《Linux就该这么学》后不仅能够掌握红帽RHEL系统,还能立即上手fedora、centos等等主流的Linux系统,当那些系统没有Postfix服务程序的时候也不用慌~对了,最后记得把iptables防火墙给禁用掉,否则会导致外部用户访问不了咱们的电子邮件系统。
[root@linuxprobe ~]# yum install postfix
Loaded plugins: langpacks, product-id, subscription-manager
rhel7 | 4.1 kB 00:00
(1/2): rhel7/group_gz | 134 kB 00:00
(2/2): rhel7/primary_db | 3.4 MB 00:00
Package 2:postfix-2.10.1-6.el7.x86_64 already installed and latest versionNothing to do
[root@linuxprobe ~]# systemctl disable iptables
配置Postfix服务程序,对于初次看到Postfix服务程序主配置文件(/etc/postfix/main.cf)的同学一定会被吓到吧,竟然足足有679行左右呢,但其实不必担心,这里面绝大多数的内容依然是注释信息,而且刘遄老师一直在强调Linux系统正确的学习方法,负责任的好老师不应只是做书本的搬运工,更应该做一名优质内容的提炼者。
Postfix服务程序总共需要修改五处,首先是在约76行左右定义有一个名称为myhostname的变量,它用来保存服务器的主机名称,读者请记住这个变量的名称,下边参数需要调用它:
[root@linuxprobe ~] # vim /etc/postfix/main.cf
# INTERNET HOST AND DOMAIN NAMES
#
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many# other configuration parameters.
#
#myhostname = host.domain.tld
myhostname = mail.linuxprobe.com
第二处是约83行左右定义有一个名称为mydomain的变量,用来保存邮件域的名称,同学们也要记住这个变量名称,下面来调用它:
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.#
mydomain = linuxprobe.com
第三处是约99行左右调用前面的mydomain变量,用来定义寄出邮件的域,调用变量的好处是避免重复写入信息以及便于今后统一进行修改:
# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites. If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
##myorigin = $myhostname
myorigin = $mydomain
第四处是约116行左右定义的网卡监听地址,您可以指定要由服务器的那些IP地址对外提供电子邮件服务,也可以干脆写成all,代表所有网卡都能向客户提供电子邮件服务:
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on. By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
##inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = all
最后第五处是约164行左右定义的可接收邮件的主机名或域名列表,此处可以直接调用前面两个定义好的myhostname,mydomain变量即可(当然不想调用变量,直接写名称信息的话也可以):
# The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for.
#
# These domains are routed to the delivery agent specified with the
# local_transport parameter setting. By default, that is the UNIX
# compatible delivery agent that lookups all recipients in /etc/passwd
# and /etc/aliases or their equivalent.
#
# The default is $myhostname + localhost.$mydomain. On a mail domain
# gateway, you should also include $mydomain.
#
# Do not specify the names of virtual domains - those domains are
# specified elsewhere (see VIRTUAL_README).
#
# Do not specify the names of domains that this machine is backup MX# host for. Specify those names via the relay_domains settings for
# the SMTP server, or use permit_mx_backup if you are lazy (see
# STANDARD_CONFIGURATION_README).
#
# The local machine is always the final destination for mail addressed
# to user@[the.net.work.address] of an interface that the mail system
# receives mail on (see the inet_interfaces parameter).
#
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydestination = $myhostname, $mydomain
创建电子邮件系统的登陆帐号,Postfix与Vsftpd服务程序一样都可以调用本地系统帐号和密码,因此在本地进行常规帐号创建即可,最后再把配置妥当的postfix服务重启,加入到开机启动项中就大功告成了!~
[root@linuxprobe ~] # useradd boss
[root@linuxprobe~] # echo "linuxprobe" | passwd --stdin boss
Changing password for user boss. passwd: all authentication tokens updated successfully.
[root@linuxprobe~] # systemctl restart postfix
[root@linuxprobe~] # systemctl enable postfix
ln -s '/usr/lib/systemd/system/postfix.service' '/etc/systemd/system/multi-user.target.wants/postfix.service'