Postfix邮件服务器架构

 用alternatives --display mta 查看一下自己的默认MTA

  1. # alternatives --display mta  
  2. mta - 状态是自动。 
  3.  链接目前指向 /usr/sbin/sendmail.sendmail 
  4. /usr/sbin/sendmail.sendmail - 优先度 90 
  5.  从 mta-mailq:/usr/bin/mailq.sendmail 
  6.  从 mta-newaliases:/usr/bin/newaliases.sendmail 
  7.  从 mta-rmail:/usr/bin/rmail.sendmail 
  8.  从 mta-sendmail:/usr/lib/sendmail.sendmail 
  9.  从 mta-pam:/etc/pam.d/smtp.sendmail 
  10.  从 mta-sendmailman:/usr/share/man/man8/sendmail.sendmail.8.gz 
  11.  从 mta-mailqman:/usr/share/man/man1/mailq.sendmail.1.gz 
  12.  从 mta-newaliasesman:/usr/share/man/man1/newaliases.sendmail.1.gz 
  13.  从 mta-aliasesman:/usr/share/man/man5/aliases.sendmail.5.gz 
  14. 当前“最佳”版本是 /usr/sbin/sendmail.sendmail。 

我的邮件系统默认为sendmail,我们需要的是Postfix。 

关闭sendmail服务。

因为系统运行需要邮件服务,Postfix没安装啊前,暂时不用#rpm -e sendmail卸载此邮件服务

  1. # service sendmail stop 
  2. 关闭 sm-client:[确定] 
  3. 关闭 sendmail:[确定] 
  4. # chkconfig sendmail off 

Postfix最新版本为 Postfix 2.9 experimental release,我们下载稳定版本Postfix 2.8 stable release

  1. # wget http://postfix.it-austria.net/releases/official/postfix-2.8.4.tar.gz  

!!!安装数据库

在安装Postfix2.8时,需要指定数据库的位置,我们先来下载安装最新的Mysql-5.5.14

  1. # wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.14.tar.gz/from/http://mysql.stu.edu.tw/ 

安装一下Mysql所依赖的软件gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool* expect

  1. # yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt* libtool* expect 

创建Mysql安装目录及数据存放目录

  1. # mkdir /usr/local/mysql 
  2. # mkdir /var/mysqldata 

创建用户和组

  1. # groupadd mysql 
  2. # useradd -g mysql mysql 

赋予数据存放的权限

  1. # chown mysql.mysql -R /var/mysqldata/ 

安装cmake

我用的是最新的Mysql-5.5.14,Mysql5.5以后是用cmake来编译的,我们下载并安装cmake

  1. # wget http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz 
  2. # tar zxvf cmake-2.8.5.tar.gz 
  3. # cd cmake-2.8.5 
  4. # ./configure 
  5. # make && make install 

安装Bison

看M4安装的位置并写入环境变量

  1. # whereis m4 
  2. # vi /etc/exports 
  3. PATH=$PATH:/usr/bin/m4 

下载并安装Bison

  1. # wget ftp://mirrors.kernel.org/gnu/bison/bison-2.5.tar.gz 
  2. # tar zxvf bison-2.5.tar.gz 
  3. # cd bison-2.5 
  4. # ./configure --prefix=/usr/local/bison --with-libiconv-prefix=/usr/local/lib
  5. # make
  6. # make install

添加Bison到环境变量并刷新环境变量(或 yum -y install bison)

  1. # vi /etc/exports 
  2. PATH=$PATH:/usr/bin/bison 
  3. # source /etc/exports

安装Mysql

  1. # tar zxvf mysql-5.5.14.tar.gz 
  2. # cd mysql-5.5.14 
  3. # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 
  4. -DMYSQL_UNIX_ADDR=/var/mysqldata/mysql.sock \ 
  5. -DDEFAULT_CHARSET=utf8 \ 
  6. -DDEFAULT_COLLATION=utf8_general_ci \ 
  7. -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \ 
  8. -DWITH_MYISAM_STORAGE_ENGINE=1 \ 
  9. -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 
  10. -DWITH_READLINE=1 \ 
  11. -DENABLED_LOCAL_INFILE=1 \ 
  12. -DMYSQL_DATADIR=/var/mysqldata \ 
  13. -DMYSQL_TCP_PORT=3306
  14. # make
  15. # make install

复制配置文件

  1. # cp support-files/my-medium.cnf /etc/my.cnf 

初始化数据

初始化前需要赋值给scripts/mysql_install_db执行权限

  1. # chmod 755 scripts/mysql_install_db 
  2. # scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/var/mysqldata/ 

设置开机启动Mysql

  1. # cp support-files/mysql.server /etc/init.d/mysql 
  2. # chmod 755 /etc/init.d/mysql 
  3. # chkconfig mysql on 

为Mysql添加环境变量并添加两个别名方便开启(#source /etc/profile 刷新后起效)

  1. # vi /etc/profile 
  2. export PATH=/usr/local/mysql/bin:$PATH 
  3. alias mysql_start="mysqld_safe &" 
  4. alias mysql_stop="mysqladmin –u root -p shutdown" 

启动Mysql

  1. # /etc/init.d/mysql start 

设置密码

数据库的密码开始为空

  1. # /usr/local/mysql/bin/mysqladmin -u root -p password 

 !!!安装Postfix

为Postfix添加用户和组

  1. # groupadd -g 2525 postfix 
  2. # useradd -g postfix -u 2525 -s /sbin/nologin -M postfix 
  3. # groupadd -g 2526 postdrop 
  4. # useradd -g postdrop -u 2526 -s /bin/false -M postdrop 

安装以下开发所用到的rpm包组

  1. #yum groupinstall -y "Development Libraries"  "Development Tools" "Legacy Software Development"  "X Software Development"  

启动saslauth认证并加入自动启动中

  1. # service saslauthd start 
  2. # chkconfig saslauthd on 

 

安装Postfix

  1. # tar zxvf postfix-2.8.4.tar.gz  
  2. # cd postfix-2.8.4 
  3. # make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'
  4. # make
  5. # make install

 在安装的时候如果报 bin/postconf: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

  1. # vi /etc/ld.so.conf 
  2. /usr/local/mysql/lib 
  3. # ldconfig 

我的安装选项 默认也行

  1. install_root: [/] / 
  2. tempdir: [/usr/local/src/postfix-2.8.4] /tmp 
  3. config_directory: [/etc/postfix]  
  4. command_directory: [/usr/sbin]  
  5. daemon_directory: [/usr/libexec/postfix]  
  6. data_directory: [/var/lib/postfix]  
  7. html_directory: [no]  
  8. mail_owner: [postfix]  
  9. mailq_path: [/usr/bin/mailq]  
  10. manpage_directory: [/usr/local/man]  
  11. newaliases_path: [/usr/bin/newaliases]  
  12. queue_directory: [/var/spool/postfix]  
  13. readme_directory: [no]  
  14. sendmail_path: [/usr/sbin/sendmail]  
  15. setgid_group: [postdrop]  

(注意)生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:

  1. #  newaliases 

已经安装好postfix了,修改一下配置选项并启动测试

  1. # vi /etc/postfix/main.cf 
  2. myhostname = mail.test.com   
  3. myorigin = test.com   
  4. mydomain = test.com   
  5. mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain   
  6. mynetworks = 192.168.1.0/24, 127.0.0.0/8   

说明:
myorigin参数用来指明发件人所在的域名;
mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces 参数指定postfix系统监听的网络接口;


启动postfix

  1. # /usr/sbin/postfix start 

连接Postfix,验证服务状况

  1. #netstat -tnlp | grep :25   
  2. tcp   0    0 0.0.0.0:25   0.0.0.0:*     LISTEN   15497/master   
  3. # telnet localhost 25   
  4. Trying 127.0.0.1...   
  5. Connected to localhost.localdomain (127.0.0.1).   
  6. Escape character is '^]'.   
  7. 220 mail.test.com ESMTP Postfix   
  8. ehlo mail.test.com     //本postfix的hostname字段; 
  9. 250-mail.test.com   
  10. 250-PIPELINING   
  11. 250-SIZE 10240000   
  12. 250-VRFY   
  13. 250-ETRN   
  14. 250-ENHANCEDSTATUSCODES   
  15. 250-8BITMIME   
  16. 250 DSN   
  17. mail from:[email protected]   //输入发信人邮箱   
  18. 250 2.1.0 Ok   
  19. rcpt to:[email protected]  //输入收信人邮箱   
  20. 250 2.1.5 Ok   
  21. data                     //输入邮件数据信息   
  22. subject:Mail test!       //输入邮件主题   
  23. hello hanfeng!!!         //输入邮件内容   
  24. .                        //输入结束符.   
  25. 250 2.0.0 Ok: queued as C55863E016D   
  26. quit                    //输入quit退出邮件系统   
  27. 221 2.0.0 Bye   
  28. Connection closed by foreign host.   
  29. [root@station123 ~]#grep C55863E016D /var/log/maillog //查找发信状态   

为postfix开启cyrus-sasl认证

使用一下命令验证Postfix是否支持cyrus-sasl认证,如果输出结果如下,则是支持的:

  1. # /usr/sbin/postconf -a 
  2. cyrus 
  3. dovecot 

# vi /etc/postfix/main.cf
添加一下内容

  1. ############################CYRUS-SASL############################   
  2. broken_sasl_auth_clients = yes  
  3.   
  4. smtpd_recipient_restrictions=permit_mynetworks,  //下一行与此行为同一行,下一行开头,空一格   
  5.  permit_sasl_authenticated,reject_invalid_hostname,   
  6.  reject_non_fqdn_hostname,reject_unknown_sender_domain,   
  7.  reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,   
  8.  reject_unauth_pipelining,reject_unauth_destination   
  9.   
  10. smtpd_sasl_auth_enable = yes  
  11. smtpd_sasl_local_domain = $myhostname   
  12. smtpd_sasl_security_options = noanonymous  
  13. smtpdsmtpd_sasl_application_name = smtpd   
  14. smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!   

#vi /usr/lib/sasl2/smtpd.conf
添加如下内容:

  1. pwcheck_method: saslauthd 
  2. mech_list: PLAIN LOGIN 

重新加载Postfix

  1. # /usr/sbin/postfix reload 

下载并安装courier-authlib(CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations" 这个选项放在后面就错,没加载不知道有什么影响)

  1. # wget http://downloads.sourceforge.net/project/courier/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2?r=http%3A%2F%2Fwww.courier-mta.org%2Fdownload.php&ts=1311251851&use_mirror=ncu
  2. # tar jxvf courier-authlib-0.63.0.tar.bz2 
  3. # cd courier-authlib-0.63.0
  4. # ./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --with-authmysql --with-mysql-libs=/usr/local/mysql/lib --with-mysql-includes=/usr/local/mysql/include --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc
  5. # make
  6. # make install

 

 

  1. # chmod 755 /usr/local/courier-authlib/var/spool/authdaemon 
  2. # cp /etc/authdaemonrc.dist  /etc/authdaemonrc 
  3. # cp /etc/authmysqlrc.dist  /etc/authmysqlrc 
  4. # vi /etc/authdaemonrc 
  5. authmodulelist="authmysql"  
  6. authmodulelistorig="authmysql"  
  7. daemons=10  
  8. # vi /etc/authmysqlrc  为以下内容,其中2525,2525 为postfix 用户的UID和GID。
  9.     MYSQL_SERVER localhost   
  10.     MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)   
  11.     MYSQL_USERNAME  extmail           (这时为后文要用的数据库的所有者的用户名)   
  12.     MYSQL_PASSWORD extmail            (密码)   
  13.     MYSQL_SOCKET  /var/mysqldata/mysql.sock   
  14.     MYSQL_DATABASE  extmail   
  15.     MYSQL_USER_TABLE  mailbox   
  16.     MYSQL_CRYPT_PWFIELD  password   
  17.     MYSQL_UID_FIELD  '2525'   
  18.     MYSQL_GID_FIELD  '2525'   
  19.     MYSQL_LOGIN_FIELD  username   
  20.     MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)   
  21.     MYSQL_NAME_FIELD  name   
  22.     MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)   
  23.     !!!保证此文件的内容不能有错,否则不能启用postfix与mysql的连接;   
  1. # cp courier-authlib.sysvinit /etc/init.d/courier-authlib 
  2. # chmod 755 /etc/init.d/courier-authlib 
  3. # chkconfig --add courier-authlib 
  4. # chkconfig --level 2345 courier-authlib on 
  5. #echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf 
  6. # ldconfig -v 
  7. # service courier-authlib start   (启动服务) 
  8.  Starting Courier authentication services: authdaemond (可信的, 可靠的) 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章