Linux下安装Postfix邮件(二)

本套邮件系统的搭建,从如何发邮件到收邮件到认证到虚拟用户虚拟域以及反病毒和反垃圾邮件等都有详细的介绍。在搭建过程中必须的参数解释以及原理都有告诉,这样才能更好地理解邮件系统。

卸载自带postfix

$ rpm -q postfix
postfix-2.6.6-2.2.el6_1.x86_64
$ rpm -ev postfix --nodeps

环境准备

\1. YUM要配置好。

\2. 编译环境要配置好。

PS: 这两步骤如果有问题,那么可以看本网站提供的YUM和编译章节。

安装MySQL服务器

$ yum install mysql-server mysql mysql-devel perl-DBD-MySQL
$ chkconfig mysqld on
$ service mysqld restart
$ rpm -q mysql
mysql-5.1.71-1.el6.x86_64

安装cyrus-sasl并启动saslauthd服务

$ yum install cyrus-sasl cyrus-sasl-devel
$ service saslauthd start
$ chkconfig saslauthd on

查看postfix用户

$ id postfix
uid=89(postfix) gid=89(postfix) 组=89(postfix),12(mail)

发送邮件的用户,这里就使用系统自带的postfix用户,记住UID:89、GID:89,后面很多地方都要用到这两个ID号,如果此ID号更改了,那么Postfix安装方面会有很多目录权限都需要更改。

编译安装postfix-2.11.7

$ tar zxvf postfix-2.11.7.tar.gz
$ cd postfix-2.11.7
$ make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2  -lssl -lcrypto'
$ tar zxvf postfix-2.11.7.tar.gz
$ cd postfix-2.11.7
$ make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2  -lssl -lcrypto'#-DHAS_MYSQL -I/usr/include/mysql   //启用Mysql存储,指定头文件;#-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl   //启用SASL(cyrus)认证框架;#-DUSE_TLS    //启用SSL功能;#AUXLIBS=-L/usr/lib64/mysql -lmysqlclient    //找Mysql客户端库文件;#-lz                    //压缩裤文件;#-lm -L/usr/lib64/sasl2     //模块文件;#-lsasl2 -lssl -lcrypto       //加密库文件;

有以下信息就表示配置成功了

[src/posttls-finger]
cat ../../conf/makedefs.out Makefile.in >Makefile
rm -f Makefile; (cat conf/makedefs.out Makefile.in) >Makefile
$ make
$ make install

按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)

install_root: [/]
#指定Postfix安装目录,默认
tempdir: [/root/postfix-2.11.7] /tmp/postfix
#指定Postfix临时文件目录
config_directory: [/etc/postfix]
#指定Postfix配置文件目录,默认
command_directory: [/usr/sbin]
#指定Postfix二进制文件目录,默认
daemon_directory: [/usr/libexec/postfix]
#指定Postfix服务器进程,默认
data_directory: [/var/lib/postfix]
#指定Postfix可写文件目录,默认
html_directory: [no] /var/www/html/postfix
#指定Postfix帮助文件,可以使用web服务器打开
mail_owner: [postfix]
#指定Postfix属主,默认
mailq_path: [/usr/bin/mailq]
#指定Postfix队列程序路径,默认
manpage_directory: [/usr/local/man]
newaliases_path: [/usr/bin/newaliases]
#指定Postfix生成别名命令位置,默认
queue_directory: [/var/spool/postfix]
#指定Postfix队列目录,默认
readme_directory: [no]
sendmail_path: [/usr/sbin/sendmail]
#指定Postfix客户端(smtp),默认
setgid_group: [postdrop]
#指定Postfix投递组(默认有这个组,但没有这个用户),默认

PS:如果输入错误可以按Ctrl+退格键删除字符。

添加SysV风格服务脚本

[root@localhost ~]# vim /etc/rc.d/init.d/postfix#!/bin/bash## chkconfig: 2345 80 30# description: Postfix is a Mail Transport Agent, which is the program \# processname: master# pidfile: /var/spool/postfix/pid/master.pid# config: /etc/postfix/main.cf# config: /etc/postfix/master.cf# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.$NETWORKING = "no" ] && exit 3
 
[ -x /usr/sbin/postfix ] || exit 4
[ -d /etc/postfix ] || exit 5
[ -d /var/spool/postfix ] || exit 6
 
RETVAL=0
prog="postfix"
 
start() {
      # Start daemons.
      echo -n $"Starting postfix: "
        /usr/bin/newaliases >/dev/null 2>&1
      /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"
      RETVAL=$?
      [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
        echo
      return $RETVAL
}
stop() {
        # Stop daemons.
      echo -n $"Shutting down postfix: "
      /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"
      RETVAL=$?
      [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
      echo
      return $RETVAL
}
reload() {
      echo -n $"Reloading postfix: "
      /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"
      RETVAL=$?
      echo
      return $RETVAL
}
abort() {
      /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"
      return $?
}
flush() {
      /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"
      return $?
}
check() {
      /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"
      return $?
}
 
restart() {
      stop
      start
}
# See how we were called.case "$1" in
  start)
      start
       ;;
  stop)
      stop
      ;;
  restart)
      stop
      start
      ;;
  reload)
      reload
      ;;
  abort)
      abort
      ;;
  flush)
      flush
      ;;
  check)
      check
      ;;
  status)
      status master
      ;;
  condrestart)
      [ -f /var/lock/subsys/postfix ] && restart || :
      ;;
  *)
      echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"
      exit 1
esacexit $?
# END
[root@localhost ~]# chmod +x /etc/rc.d/init.d/postfix
[root@localhost ~]# chkconfig --add postfix
[root@localhost ~]# chkconfig postfix on
[root@localhost ~]# service postfix start

Postfix相关命令

# 开启postfix;
$ postfix start
 
# 检查配置;
$ postfix check
 
# 重新加载;
$ postfix reload
 
$ postconf [OPTION]
-d:显示Postfix默认的配置;
-n:显示新修改的配置;
-m:显示支持的存储文件类型如hash,mysql等;
-a:显示支持sasl的客户端插件类型;

安装完毕

如果上面没有使用UID为89的postfix用户,那么检查postfix时就会报如下错误。

$ postfix check
postsuper: fatal: scan_dir_push: open directory defer: Permission denied

原因是一般编译安装时,Postfix队列目录/var/spoole/postfix/,下有几个目录会使用系统自带postfix的目录,由于系统默认使用postfix(UID:89)用户给删除了,所以这些目录就找不到postfix用户,开启时就会报错一些权限问题,把以下几个目录权限给修改以下就好了,如果还有一些别的目录一并修改即可。

$ chown -R postfix.root /var/spool/postfix/defer/
$ chown -R postfix.root /var/spool/postfix/deferred/
$ chown -R postfix.root /var/spool/postfix/private/
$ chown -R postfix.postdrop /var/spool/postfix/public/
$ chown -R postfix.postdrop /var/spool/postfix/maildrop/
$ chown -R postfix.root /var/lib/postfix/

Postfix进程

master:这条进程是 Postfix 邮件系统的大脑,它产生所有其他进程。

smtpd:作为服务器端程序处理所有外部连进来的请求。

smtp:作为客户端程序处理所有对外发起连接的请求。

qmgr:它是 Postfix 邮件系统的心脏,处理和控制邮件队列里面的所有消息。

local:这是 Postfix 自有的本地投递代理MDA,就是它负责把邮件保存到邮箱里。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/208798.html<

(0)
管理的头像管理
上一篇2025-04-09 04:24
下一篇 2025-04-09 04:25

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注