【ACCESS精品源码栏目提醒】:本文主要为网学会员提供“RHEL5.4_Postfix_邮件系统的安装 - 其它资料”,希望对需要RHEL5.4_Postfix_邮件系统的安装 - 其它资料网友有所帮助,学习一下!
http://www.linuxidc.com/Linux/2012-01/51851p2.htm 第一篇 邮件系统简介邮件系统组成部分: MTA MSA MUAMDAMAA1 MUA :是 Mial User Agent 的简称 ,是邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口,如:linux 中的 Mail ,Windowns 中的 Foxmail,Outlook 等2 MSA :是 Mail Submmission Agent 的简称。
是邮件提交代理,负责消息有 MTA 发送之前必须完成所有准备工作和错误检测,MSA 是在 MUA 和 MTA 之间插入了一个头脑清醒的检测员,对所有的主机名,从 MUA 得到的头信息等信息进行检测 3 MTA:是 Mail Transfer Agent 的简称,邮件转发代理,负责邮件的存储和转发;监视用户的代理请求,根据电子邮件的目标地址找出对应的电子邮件服务器, 并将信件在服务器之间传输并且将接受到的邮件进行缓冲。
Linux 下有 sendmail .Postfixqmail 等4 MDA :是 Mail Ddlivery Agent 的简称。
邮件投递代理,从 MTA 接受邮件并进行适当的本地投递,可以投递一个本地用户,一个邮件列表,一个文件或者是一个程序5 MAA :是 Mail
Access Agent。
邮件访问代理,用于将用户连接到系统邮件库,使用 POP或者 Imap 协议收取邮件。
Linux 下常用的 MAA 有,Cyrus-IMAPCOURIER-IMAP 等邮件中继,当邮件的目的传输是一旦源地址和目的地址都不是本地系统,那么本地系统就是邮件中继站即是中转站6 邮件交换过程如下图第二篇 Postfix 的安装邮件系统的逻辑结构注:配置 postfix 系统时需要在 DNS 服务器中配置邮件服务器 MX 记录需要的软件包 mysql-5.5.4-m3.tar.gz openssl-1.0.0b.tar.tar pcre-8.10.zip perl-5.12.2.tar.gz php-5.2.14.tar.bz2 postfix-2.7.1.tar.gz Unix-Syslog-1.1.tar.gz.gz zlib-1.2.5.tar.gz httpd-2.2.17.tar.gz.gz extman-1.1.tar.gz extmail-1.2.tar.gz DBD-mysql-4.018.tar.gz.gz db-4.8.26.tar.gz cyrus-sasl-2.1.23.tar.gz courier-imap-4.8.1.tar.bz2 courier-authlib-0.63.0.tar.bz2 courier-analog-0.16.tar.bz2 clamav-0.96.5.tar.gz maildrop-2.5.2.tar.bz Mail-SpamAssassin-3.3.1.tar.gz GD-2.45.tar.gz.gz第二.安装 mysql 1 添加 mysql 用户 groupadd mysql useradd –g mysql –s /bin/false –M mysql 2 编译安装 mysql tar xvf mysql-5.5.4-m3.tar.gz cd mysql-5.5.4-m3 ./configure --prefix/usr/local/mysql --enable-thread-safe-client --enable-local-infile --with-charsetgbk --with-extra-charsetall --with-low-memory make ampamp make install cp support-files/my-medium.cnf /etc/my.cnf cd /usr/local/mysql chown –R mysql.mysql . bin/mysql_install_db –usermysql chown –R root . chown –R mysql var bin/mysqld_safe --usermysql amp cd /root/postfix/mysql-5.5.4-m3 cp support/mysql.server /etc/rc.d/init.d/mysqld chmod 700 /etc/rc.d/init.d/mysqld3 把 mysql 加入到自动启动队列 chkconfig –add mysqld chkconfig mysqld on4 测试 mysql /usr/local/mysql/bin/mysqladmin ping mysqld is alive /usr/local/mysql/bin/mysqladmin version /usr/local/mysql/bin/mysql5 添加 root 用户的密码 /usr/local/mysql/bin/mysqladmin –uroot –p “Oldpassword” password “newpassword” 注:此时的 mysql 的 root 用户的密码为空6 配置 mysql 的库文件搜索路径echo “/usr/local/mysql/lib/mysql” gtgt/etc/ld.so.conf ldconfig –v 注:一定要执行 ldconfig –v 不然当前不会去指定的 mysql 的库文件中查找 mysql 的库文件7 把/usr/local/mysql/bin 添加到环境变量 PATH 中 vim /etc/profile export PATHPATH:/usr/local/mysql/bin、 并执行 source /etc/profile第三 安装 openssl,在解压安装 openssl 时一定要配置好当前的系统时间,否则,在 解压是和安装时会报错 1 安装 openssl openssl-1.0.0b.tar.tar cd openssl-1.0.0b ./configure shared zlib make make test make install 2 删除系统中的 openssl 文件 mv /usr/bin/openssl /usr/bin/openssl.OFF mv /usr/include/openssl /usr/include/openssl.OFF rm /usr/lib/libssl.so 3 创建新编译的 openssl 文件 ln -sv /usr/local/ssl/bin/openssl /usr/bin/openssl ln -sv /usr/local/ssl/include/openssl /usr/include/openssl ln –sv /usr/local/ssl/lib/libssl.so.1.0.0 /usr/lib/libssl.so 4 配置 openssl 库文件搜索路径 echo “/usr/local/ssl/lib” /etc/ld.so.conf ldconfig –v 5 检测 openssl 的版本 openssl version OpenSSL 1.0.0b 16 Nov 2010第四 安装 cyrus-sasl 1 安装 cyrus-sasl tar xvf cyrus-sasl-2.1.23.tar.gz cd cyrus-sasl-2.1.23 ./configure --prefix/usr/local/sasl2 (注意使用续行符) --disable-gssapi --disable-anon --disable-sample --disable-digest --enable-plain --enable-login --enable-sql --with-mysql/usr/local/mysql --with-mysql-includes/usr/local/mysql/include/mysql--with-mysql-libs/usr/local/mysql/lib/mysql--with-authdaemond/usr/local/courier-authlib/var/spool/authdaemon/socketmake make install 2 关闭系统自带的 sasl mv /usr/lib/libsasl2.a /usr/lib/libsasl2.a.OFF mv /usr/lib/libsasl2.so.2.0.22 /usr/lib/libsasl2.so.2.0.22.OFF mv /usr/lib/sasl2 /usr/lib/sasl2.OFF rm /usr/lib/libsasl2.so rm /usr/lib/libsasl2.so.2 3 重新创建新编译的 sasl 库文件 ln –sv /usr/local/sasl2/lib/ /usr/lib Postfix2.3 以后的版本会分别在/usr/local/lib 和/usr/local/include 中搜索 sasl 的库文件及其头文件,因此需要将其连接至此 ln –sv /usr/local/sasl2/lib/ /usr/local/lib ln –sv /usr/local/sasl2/include/sasl/ /usr/local/include 4 创建运行时需要的目录并调试启动 mkdir -pv /var/state/saslauthd /usr/local/sasl2/sbin/saslauthd -a shadow pam -d 5 启动并测试 /usr/local/sasl2/sbin/saslauthd –a shadow pam /usr/local/sasl2/sbin/testsaslauthd –u root –p root 用户密码 6 添加配之文件搜索路径 echo “/usr/local/sasl2/libquot gtgt /etc/ld.so.conf echo quot/usr/local/sasl2/lib/sasl2quot gtgt /etc/ld.so.conf ldconfig –v 注:一定要执行该命令,否则不会生效,除非是重启系统 7 添加开机自动启动 echo “/usr/local/sasl2/sbin/saslauthd -a shadow pam ” gtgt/etc/rc.local第五 安装 BerkeleyDB 1 解压并安装 tar xvf DBD-mysql-4.018.tar.gz.gz cd DBD-mysql-4.018/dist ./configure --prefix/usr/local/BerkeleyDB make make install 2 修改相应的头文件 mv /usr/include/db4 /usr/include/db4.OFF rm /usr/include/db_cxx.h rm /usr/include/db.h rm /usr/include/db_185.h ln -sv /usr/local/BerkeleyDB/include /usr/include/db4 ln -sv /usr/local/BerkeleyDB/include/db.h /usr/include/db.h ln -sv /usr/local/BerkeleyDB/include/db_cxx.h /usr/include/db_cxx.h 3 配置库文件搜索路径 echo “/usr/local/BerkeleyDB/lib “ gtgt/etc/ld.so.conf ldconfig –v第六 安装 httpd 1 安装 httpd tar xfv httpd-2.2.17.tar.gz.gz cd httpd-2.2.17 ./configure --prefix/usr/local/apache --enable-so --enable-ssl --with-ssl/usr/local/ssl --enable-track-vars --enable-rewrite --with-zlib --enable-mods-sharedmost --enable-suexec 后面 extmail 切换”运行时用户”时要用到 --with-suexec-callerdaemon make make install 2 配置开机启动 echo “/usr/local/apache/bin/apachectl start”gtgt/etc/rc.local 第七,安装 php 1 安装 php-5.2.14.tar.bz2 tar xvf php-5.2.14.tar.bz2 cd php-5.2.14 ./configure --prefix/usr/local/php --with-apxs2/usr/local/apache/bin/apxs --with-mysql/usr/local/mysql -with-mysqli/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-png-dir --with-jpeg-dir --with-zlib --with-freetype -dir --with-gd-dir --enable-mbstringall make make install 2 配置 php 的配置文件 cp php.ini-dist /usr/local/php/lib/php.ini 3 整合 php 和 apahce ,且 apache 支持 php cd /usr/local/apache/conf vim httpd.conf 并找到 AddType application/x-compress .Z AddType application/x-gzip .gz .tgz 并在其后添加一下两行 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 4 找到 DirectoryIndex index.html 修改为: DirectoryIndex index.php index.html 5 验证 apache 是否能够正常支持配 php 文件 在/usr/local/apache/htdocs 中创建 vim Test.php lt Phpinfo gt6 重启 apache /usr/local/apache/bin/apachectl stop /usr/local/apache/bin/apachectl start7 访问 http://IP/Test.php 能够正常显示 php 的版本号及其配置信息8 将网站根目录指定到/var/www: 找到 DocumentRoot “/usr/local/apache/htdocs” 修改为:DocumentRoot “/var/www”后文中我们还会注释掉此行,以启用虚拟主机 找到ltDirectory “/usr/local/apache/htdocs”gt 修改为:ltDirectory “/var/www”gt第八 安装 postfix 1 创建 postfix 和 postdrop 用户 groupadd –g 2525 postfix useradd –g postfix –u 2525 –s /sbin/nologin –M postfix groupadd –g 2526 postdrop useradd –g postdrop –u 2526 –s /bin/false –M postdrop 2 安装 postfix-2.7.1 tar xvf postfix-2.7.1.tar.gz cd postfix-2.7.1 make makefiles CCARGS-DHAS_MYSQL -I/usr/local/mysql/include/mysql-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl-I/usr/local/BerkeleyDB/include -DUSE_TLS -I/usr/local/ssl/include/openssl AUXLIBS-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2-L/usr/local/BerkeleyDB/lib -L/usr/local/ssl/lib -lssl -lcrypto make make install按照以下的提示输入相关的路径daemon_directory: /usr/local/postfix/libexecdata_directory: /usr/local/postfix/libhtml_directory: /var/www/postfix_htmlmail_owner: postfixmailq_path: /usr/bin/mailqmanpage_directory: /usr/local/postfix/mannewaliases_path: /usr/bin/newaliasesqueue_directory: /var/spool/postfixreadme_directory: nosendmail_path: /usr/sbin/sendmailsetgid_group: postdrop 3 生 成 别 名 二 进 制 文 件 , 此 步 能 够 提 高 postfix 的 效 率 , 如 果 不 生 成 二 进 制 文件。
Postfix 的效率比较低下 newaliases 4 配置 postfix,并启动,测试 postfix 并进行发言 cd /etc/postfix/ vim main.cf myhostname mail.frank.netmydomain frank.netmyorigin frank.netinet_interfaces allmydestination myhostname localhost.mydomain localhost mydomainmynetworks 192.168.18.0/24 127.0.0.0/8说明:myorigin 参数用来指明发件人所在的域名;mydestination 参数指定 postfix 接收邮件时收件人的域名,即您的 postfix 系统要接收到哪个域名的邮件;myhostname 参数指定运行 postfix 邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;mydomain 参数指定您的域名,默认情况下,postfix 将 myhostname 的第一部分删除而作为mydomain 的值;mynetworks 参数指定你所在的网络的网络地址,postfix 系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;inet_interfaces 参数指定 postfix 系统监听的网络接口;当然在上面的 myoriginfrank.net 同时也可以用mydomain 来代替 frank.net在配置或者修改 postfix 配置文件是,必须重新启动 postfix 或者 reload ,配置才能生效,但是如果是修改 inet_interfaces,则需要重新启动 postfix如果一个参数的值有多个, 可以将它们放在不同的行中, 只需要在其后的每个行前多置一个空格即可;postfix 会把第一个字符为空格或 tab 的文本行视为上一行的延续 5 启动 postfix /usr/local/postfix/sbin/postfix start 6 连接 postfix,并验证 postfix 是否正常启动 telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain 127.0.0.1.Escape character is .220 mail.frank.net ESMTP Postfixehlo mail.frank.net250-mail.frank.net250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNmail from:rootfrank.net250 2.1.0 Okrcpt to:RedHatfrank.net250 2.1.5 Okdata354 End data with ltCRgtltLFgt.ltCRgtltLFgtsubject:test test. 250 2.0.0 Ok: queued as AB94A1A561quit221 2.0.0 ByeConnection closed by foreign host. 7 切换到 redhat,查看是否收到 email 切换到 redhat 用户进行收信: su - redhat mailMail version 8.1 6/6/93. Type for help.quot/var/spool/mail/redhatquot: 1 message 1 newgtN 1 rootfrank.net Wed Sep 8 22:40 16/566 quottestquotamp第九 为 postfix 开启基于 cyrus-sasl 的认证 1 确认 postfix 是否支持 cyrus 风格的 sasl 的认证, /usr/local/postfix/sbin/postconf –a cyrus dovecot 如果出现上面的信息,说明 postfix 支持 cyrus 认证 2 在 postfix 的主配置文件尾部添加一下内容vim /etc/postfix/main.cf CYRUS-SASLbroken_sasl_auth_clients yessmtpd_recipient_restrictionspermit_mynetworkspermit_sasl_authenticatedreject_invalid_hostnamereject_non_fqdn_hostnamereject_unknown_sender_domainreject_non_fqdn_senderreject_non_fqdn_recipientreject_unknown_recipient_domainreject_unauth_pipeliningreject_unauth_destinationsmtpd_sasl_auth_enable yessmtpd_sasl_local_domain myhostnamesmtpd_sasl_security_options noanonymoussmtpd_sasl_application_name smtpdsmtpd_banner Welcome to our myhostname ESMTPWarning: Version not Available 3 配置 sasl2 的库文件中创建下面的文件 cd /usr/local/lib/sasl2/ vim smtpd.conf pwcheck_method: saslauthdmech_list: PLAIN LOGIN 4 重新加载 postfix 的配置文件 /usr/local/postfix/sbin/postfix reload 5 验证 telnet localhost 25 Trying 127.0.0.1...Connected to localhost.localdomain 127.0.0.1.Escape character is .220 Welcome to our mail.frank.net ESMTPWarning:Version not Availableehlo mail.frank.net250-mail.frank.net250-PIPELINING250-SIZE 14336000250-VRFY250-ETRN250-AUTH PLAIN LOGIN250-AUTHPLAIN LOGIN (确认以上两行正常输出)250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN第十 ;配置 postfix 支持虚拟域和虚拟用户 1 在 postfix 的主配置文件的尾部添加以下内容 Virtual Mailbox Settings virtual_mailbox_base /var/spool/mailvirtual_mailbox_maps mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_mailbox_domains mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_alias_domains virtual_alias_maps mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_uid_maps static:2525virtual_gid_maps static:2525virtual_transport virtualmaildrop_destination_recipient_limit 1maildrop_destination_concurrency_limit 1QUOTA Settingsmessage_size_limit 14336000virtual_mailbox_limit 20971520virtual_create_maildirsize yesvirtual_mailbox_extended yesvirtual_mailbox_limit_maps mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cfvirtual_mailbox_limit_override yesvirtual_maildir_limit_message Sorry the users maildir has overdrawn his diskspace quotaplease Tidy your mailbox and try again later.virtual_overquota_bounce yes 2 添加支持虚拟域和虚拟用户所需要的配置文件 创建/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:user extmailpassword extmailhosts localhostdbname extmailtable aliasselect_field gotowhere_field address创建/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:user extmailpassword extmailhosts localhostdbname extmailtable domainselect_field descriptionwhere_field domain创建/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:user extmailpassword extmailhosts localhostdbname extmailtable mailboxselect_field quotawhere_field username创建/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:user extmailpassword extmailhosts localhostdbname extmailtable mailboxselect_field maildirwhere_field username第十一 .安装 Courier authentication library 1 编译安装 courier-authlib tar xvf courier-authlib-0.63.0.tar.bz2 ./configure --prefix/usr/local/courier-authlib --sysconfdir/etc --without-authpam -without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --with-authmysql --with-m.