postfix mysql_Linux中Postfix邮件安装配置(二)

本文详细介绍了在Linux系统中如何搭建Postfix邮件服务器,包括从发邮件到收邮件,再到认证、虚拟用户、虚拟域、反病毒和反垃圾邮件等功能的设置。在配置过程中,讲解了必要的参数及其原理,确保读者能够理解邮件系统的运作。文章还涵盖了MySQL服务器的安装、cyrus-sasl的启用、Postfix的编译安装以及服务脚本的创建和启动。

原标题:Linux中Postfix邮件安装配置(二)

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

卸载自带postfix$ rpm -q postfix

postfix -2.6.6-2.2.el6_1.x86_64

$ rpm -ev postfix --nodeps

环境准备

YUM要配置好。

编译环境要配置好。

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

$cdpostfix-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

$cdpostfix-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. outMakefile. in>Makefile

rm -f Makefile; (cat conf/makedefs. outMakefile. 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

# deion: 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"] && exit3

[ -x /usr/sbin/postfix ] || exit4

[ -d /etc/postfix ] || exit5

[ -d /var/spool/postfix ] || exit6

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 $ "$progstart"

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 $ "$progstop"

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 $ "$progreload"

RETVAL=$?

echo

return$RETVAL

}

abort() {

/usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $ "$progabort"

return$?

}

flush() {

/usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $ "$progflush"

return$?

}

check() {

/usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $ "$progcheck"

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}"

exit1

esac

exit$?

# 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: opendirectorydefer: 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,就是它负责把邮件保存到邮箱里。

责任编辑:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值