debian下怎么建立postfix和extmail51CTO博客 - 超凡娱乐

debian下怎么建立postfix和extmail51CTO博客

2019年04月23日08时05分50秒 | 作者: 景天 | 标签: 装置,修正,用户 | 浏览: 1694

       在刚开端树立时,遇到了许多的困难,这远比我幻想的要难,特别还要满意公司的需求,我看了一些材料,包含Postfix威望攻略,看了sery的博文,看了些官方的文档,只不过是在centos上树立的,和debian的环境有许多不同之处,这在开端给我带来了许多的费事,望今后想树立的朋友,应该挑选一个自己较了解的体系渠道进行测验,我是没法子,还有在这儿还有提示一下朋友,在上手之前必定要把邮件体系的常识把握到必定的程度。   以下是用到的一些软件:
称号 用处 下载地址
Apache (httpd-2.2.0) Web办法办理邮件 [url]www.apache.org[/url]
Php (php-5.2.3) Php 解说器,与apache一同运用 [url]www.php.org[/url]
Mysql (mysql-5.0.41) 用数据库存储用户信息 [url]www.mysql.com[/url]
extman(postfix-2.1.0) 邮件帐号后台web办理东西 [url]http://sourceforge.net/projects/postfixadmin/[/url]
SASL(cyrus-sasl-2.1.21.tar.gz) 验证办法 [url]http://ftp.andrew.cmu.edu/pub/cyrus-mail/[/url]
Authlib(courier-authlib-0.59.3.tar.bz2) 与SASL一同做验证 [url]http://www.courier-mta.org/download.php[/url]
Postfix 邮件体系主程序 [url]http://www.postfix.org[/url]
Courier-imap (courier-imap-4.1.3.tar.bz2) Pop3及IMAP效劳 [url]http://www.courier-mta.org/[/url]  
Perl (perl-5.8.8) 解说器 [url]http://www.cpan.org[/url]
Maildrop (maildrop-2.0.4.tar.bz2) 邮件投递署理,直观的讲便是把收到的邮件转发到用户的邮箱目录 [url]http://www.courier-mta.org/[/url]
Pcre (pcre-7.2.tar.bz2) 装置Imap需求 Perl兼容正则表达式 [url]http://www.pcre.or[/url]g
Extmail (extmail-1.0.1.tar.gz) webmail [url]http://www.extmail.org[/url]
  源文档 < 下面我用表格的办法列出postfix体系所需求创立的用户及组的状况:
用户名 组名 效果 补白
mysql Mysql,extmail,extman 数据库mysql运转用户,界面与后台默许用户  
vmail Vmail Postfix虚拟邮件帐号所运用的用户及组 uid,gid:2000,2000
postfix Postfix Postfix主程序运用的帐号和组  
  Postdrop Postfix  setgid_group setgid_group=postdrop
  源文档 <     上面用到的用户有必要要有   在这儿用到的一些根本包就不罗列了,像postfix ,apache,等,就用apt-get 进行装置,途中报错,留意提示信息,仔细就能够了,这儿再次着重版别的共同性。下面就直接进入正题了,注:有些当地我摘要的是官方文档的内容,如有笔误敬请体谅 # 一。在/etc/postfix/main.cf中添加的内容 下面是SSL认证的部分 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients= yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_client_restrictions = permit_sasl_authenticated #smtpd_sasl_local_domain = $mydomain   下面是结合mysql,extmail,extman 的要求进行装备,细节后边会说 # banner mail_name = Postfix - by XXXX.com smtpd_banner = $myhostname ESMTP $mail_name   # response immediately smtpd_error_sleep_time = 0s unknown_local_recipient_reject_code = 450   # extmail config here virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_transport = maildrop                          //这儿没有冒号,指定邮件的relay办法 virtual_mailbox_base = /home/domains/ virtual_gid_maps=static:2000                   //留意对应 virtual_uid_maps=static:2000 readme_directory = /usr/share/doc/postfix html_directory = /usr/share/doc/postfix/html   #QUOTA  //磁盘配额的设置 message_size_limit = 14336000 virtual_mailbox_limit = 1000000000       //默许的巨细 virtual_create_maildirsize = yes virtual_mailbox_extended = yes       //是否答应逾越默许的巨细 virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_maildir_limit_message = Sorry, the users maildir has overdrawn his diskspace quota, please try again later. virtual_overquota_bounce = yes 下面是手动加的,和上面的对应 修正mysql_virtual_alias_maps.cf vi /etc/postfix/mysql_virtual_alias_maps.cf   内容如下: user = extmail password = extmail hosts = mail.xxxx.com dbname = extmail table = alias select_field = goto where_field = address   修正mysql_virtual_domains_maps.cf vi /etc/postfix/mysql_virtual_domains_maps.cf   内容如下: user = extmail password = extmail hosts = mail.xxxx.com dbname = extmail table = domain select_field = de.ion where_field = domain #additional_conditions = and backupmx =0 and active =1   修正mysql_virtual_mailbox_maps.cf vi /etc/postfix/mysql_virtual_mailbox_maps.cf 内容如下: user = extmail password = extmail hosts = mail.xxxx.com dbname = extmail table = mailbox select_field = maildir where_field = username #additional_conditions = and active = 1   修正/etc/postfix/mysql_virtual_limit_maps.cf user = extmail password = extmail
hosts = 127.0.0.1  //这儿最好指ip
dbname = extmail table = mailbox select_field = quota where_field = username additional_conditions = AND active = 1   3   二。装置cyrus-sasl2   apt-get install libsasl2 libsasl2-modules libsasl2-modules-sql   >创立/etc/postfix/sasl/smtpd.conf 参加下面的内容   pwcheck_method: authdaemond  //认证的办法 log_level: 3 mech_list: PLAIN LOGIN authdaemond_path:/var/run/courier/authdaemon/socket  //留意途径       #   三。装置Courier-Authlib   运转如下指令装置相关软件包   apt-get install libtool       apt-get install courier-authlib apt-get install courier-authlib-dev apt-get install courier-authlib-mysql   mail:/etc/courier# pwd /etc/courier mail:/etc/courier# less authdaemonrc DEBUG_LOGIN=2     //会生成具体的过错报告,之后置零   修正etc/courier/authdaemon  //里边进行指定mysql的指定 首要关系到认证 authmodulelist="authmysql" authmodulelistorig="authmysql"   修正/etc/courier/authmysqlrc文件,并将其内容清空,然后添加如下内容:   MYSQL_SERVER            mail.xxxx.com MYSQL_USERNAME          extmail MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /var/run/mysql/mysql.sock                        //留意这儿和centos不一样
MYSQL_PORT              3306 MYSQL_OPT               0 MYSQL_DATABASE          extmail MYSQL_USER_TABLE        mailbox MYSQL_CRYPT_PWFIELD     password MYSQL_UID_FIELD         uidnumber MYSQL_GID_FIELD         gidnumber MYSQL_LOGIN_FIELD       username MYSQL_HOME_FIELD        homedir MYSQL_NAME_FIELD        name MYSQL_MAILDIR_FIELD     maildir MYSQL_QUOTA_FIELD       quota MYSQL_SELECT_CLAUSE     SELECT username,password,"",uidnumber,gidnumber,\                         CONCAT(/home/domains/,homedir),               \//查询的内容                         CONCAT(/home/domains/,maildir),               \                         quota,                                          \                         name                                            \                         FROM mailbox                                    \                         WHERE username = $(local_part)@$(domain)   存盘退出后发动courier-authlib:   /etc/init.d/courier-authlib start                  如一切正常,指令即将回来如下信息:   Starting Courier authentication services: authdaemond     修正authdaemon socket目录权限   假如该目录权限不正确修正,maildrop及postfix等将无法正确获取用户的信息及暗码认证: chmod 755 /var/spool/authdaemon     四。装置maildrop apt-get install maildrop apt-get install mailman       装备master.cf 为了使Postfix支撑Maildrop,有必要修正/etc/postfix/master.cf文件,注释掉本来的maildrop的装备内容,并改为: maildrop   unix        -       n        n        -        -        pipe    flags=DRhu user=vmail argv=/usr/bin/maildrop -V3 -w 90  -d ${recipient}  //V3为生成具体的日志,之后记住关掉   装备main.cf 因为maildrop不支撑一次接纳多个收件人,因而有必要在main.cf里添加如下参数:   #mailbox_command = procmail -a "$EXTENSION"  //这儿有必要注释掉 maildrop_destination_recipient_limit = 1  //在里边新加的内容 最终从头发动postfix即可       留意事项: 1.如需从头编译Maildrop软件包,有必要先取得其源码rpm包,而且有必要先行装置courier-authlib及其devel软件包,不然编译后的maildrop将无法翻开authlib支撑。   2.maildrop RPM包装置时,会主动创立vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因而运用postfix用户不能满意要求。其次,假如用Maildrop作为投递署理(MDA),以postfix身份投递的话,会导致postfix MTA过错     五。装备appache 修正/etc/httpd/conf/vhost_extmail.conf,里边界说虚拟主机的相关内容,包含主目录,以及ExtMail和ExtMan的相关装备,Suexec的设置等。 # VirtualHost for ExtMail Solution
<VirtualHost *:80>
ServerName mail.xxxx.com
DocumentRoot /var/www/extsuite/extmail/html/

.Alias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail/ /var/www/extsuite/extmail/html/

.Alias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman/ /var/www/extsuite/extman/html/

# Suexec config
#SuexecUserGroup vmail vmail
</VirtualHost>
从头发动apache:  /etc/init.d/apache2 restart       六。装置ExtMail   树立/var/www/extsuite并仿制源码到该目录,相关指令: mkdir /var/www/extsuite tar -zxvf src/extmail-1[1][1].0.4.tar.gz -C src cp -r src/extmail-1.0.4 /var/www/extsuite/extmail cd /var/www/extsuite/extmail cp webmail.cf.default webmail.cf cd $OLDPWD   留意:上面指令行中最终一个cd $OLDPWD是回来原始途径(即ExtMail Solution软件包根目录)   装置perl-Unix-Syslog包 apt-get install Unix-Syslog-perl   修正webmail.cf 修正/var/www/extsuite/extmail/webmail.cf里的其他参数,首要变化的内容见下:   SYS_USER_LANG = zh_CN SYS_USER_CHARSET = gb2312   SYS_MFILTER_ON = 1 SYS_NETDISK_ON = 1 SYS_SHOW_SIGNUP = 0   SYS_MYSQL_USER = extmail SYS_MYSQL_PASS = extmail SYS_MYSQL_DB = extmail SYS_MYSQL_HOST = mail.XXXX.com SYS_MYSQL_SOCKET = /var/run/mysql/mysql.sock //留意途径     SYS_G_ABOOK_TYPE = file SYS_G_ABOOK_FILE_CHARSET = gb2312     其间SYS_MFILTER_ON及SYS_NETDISK_ON 设置为1是为了翻开网络磁盘和过滤器;SYS_SHOW_SIGNUP操控主页是否显现免费注册邮箱按钮;大局地址本默许为ldap格局,现在也改为文本格局,并将地址本的转化编码改为GB2312   更新cgi目录权限 因为SuEXEC的需求,有必要将extmail的cgi目录修正成vuser:vgroup权限://前面树立了需帐户和组为:vmail fid=uid=2000   chown -R vmail:vmail /var/www/extsuite/extmail/cgi/   33   七。装置ExtMan - web后台   在ExtMail-Solution软件包根目录下履行:                    //留意man办理界面登陆后要正规退出   tar -zxvf src/extman-0[1][1].2.4.tar.gz -C src cp -r src/extman-0.2.4 /var/www/extsuite/extman/       装备webman.cf 修正/var/www/extsuite/extman/webman.cf内SYS_CHARSET及SYS_LANG参数为:   SYS_CAPTCHA_ON = 1 # SYS_CAPTCHA_ON参数操控主页是否选用校验码登陆 SYS_CHARSET = gb2312           //这个是手动加上的  修正了SYS_GROUPMAIL_SENDER = [email]postmaster@extmail.org[/email] SYS_LANG = zh_CN SYS_MYSQL_USER = webman SYS_MYSQL_PASS = webman #SYS_MYSQL_USER = extmail #SYS_MYSQL_PASS = extmail SYS_MYSQL_DB = extmail SYS_MYSQL_HOST = mail.XXXX.com SYS_MYSQL_SOCKET = /var/run/mysql/mysql.sock   //留意要在mysql中树立webman这个用户,不然会不让登陆后台   其他参数根本上能够运用默许值。   装置perl-GD包 apt-get install perl-GD   更新cgi目录权限 因为SuEXEC的需求,有必要将extman的cgi目录修正成vmail:vmail权限:     #333 八。承认MySQL状况   在履行mysql操作前,有必要承认它已被正确装置并发动,能够用rpm指令查询mysql server的装置状况,用ps ax的办法查看进程列表是否有mysqld进程:   rpm -aq|grep -i mysql-server 正常状况下应该能够看到mysql-server被装置:   mysql-server-4.1.20-2.RHEL4.1.0.1 假如没有,则标明没有装置好mysql-server,能够从本软件包RPMS目录里装置,也能够找装置光盘装置:   rpm -ivh RPMS/mysql-server-4.1.20-2.RHEL4.1.0.1.i386.rpm 装置结束后有必要初始化mysql,然后从头发动   /usr/bin/mysql_install_db service mysqld start   正常状况下将发动成功:   Starting MySQL:                                            [  OK  ]   然后用ps指令来查看mysqld是否正确运转:   ps ax|grep mysqld 正常状况下应呈现如下的成果:   433 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe defaults-file=/etc/my.cnf pid-file=/var/run/mysqld/mysqld.pid 466 pts/0 Sl 0:00 /usr/libexec/mysqld defaults-file=/etc/my.cnf basedir=/usr datadir=/var/lib/mysql user=mysql pid-file=/var/run/mysqld/mysqld.pid skip-locking socket=/var/lib/mysql/mysql.sock 假如mysql没正确发动,请查看/var/log/mysqld.log里边的犯错提示,进行处理:   tail /var/log/mysqld.log     数据库初始化 履行以下指令导入mysql数据库结构及初始化数据,留意有必要逐行输入以下指令,root暗码默许为空,不可直接用鼠标仿制两行指令直接输入,不然会报错!   mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql  //这儿是要导入的数据 mysql -u root -p < /var/www/extsuite/extman/docs/init.sql  //留意更改里边的用户,主机域名,地址,默许的uid与gid改为2000           链接根本库到Extmail   树立暂时文件夹: mkdir /tmp/extman chown -R vmail:vmail /tmp/extman //留意他的存在问题   树立方才导入mysql的postmaster@XXXX.com帐户的Maildir,请输入如下指令:   cd /var/www/extsuite/extman/tools ./maildirmake.pl /home/domains/XXXX.com/postmaster/Maildir   //手动树立用户 chown -R vuser:vgroup /home/domains/XXXX.com cd $OLDPWD   留意事项:     上面指令行中最终一个cd $OLDPWD是回来原始途径(即ExtMail Solution软件包根目录)   因为RedHat发行版中包含了一个叫tmpwatch的东西,该东西会定时扫描/tmp/下的文件,假如这些文件好久都没被运用,将被删去,因而假如后台长时间不运用,/tmp/extman目录有或许被tmpwatch删去,所以要么定时登陆后台,要么修正 webman.cf将暂时目录修正到另一个当地。此处暂以/tmp/extman默许值为例。   上述导入初始化SQL时,默许的uidnumber/gidnumber都是2000,这和vuser:vgroup 的uid/gid共同,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里现已界说好了投递时的运转身份(vmail:vmail),所以这两个字段的内容有必要为2000,不然将呈现投递过错,例如报0x06等过错     chown -R vmail:vmail /var/www/extsuite/extman/cgi     测验authlib 在指令行下履行:   /usr/sbin/authtest -s login postmaster@XXXX.com extmail   //留意@后边的域名是否重复了,看一下mysql的日志 成果如下:   Authentication succeeded.        Authenticated: [email]postmaster@extmail.org[/email]  (uid 2000, gid 2000)     Home Directory: /home/domains/XXXX.com/postmaster            Maildir: /home/domains/XXXX.com/postmaster/Maildir/              Quota: 104857600S Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0 Cleartext Password: extmail            Options: (none)   这样标明ExtMan的正确装置,数据库也正确导入,courier-authlib能正确连接到mysql数据库   最终拜访[url]http://mail.[/url]xxxx.com/extmail/,如无意外,将看到webmail的登陆页,不过此刻还没有加正式的用户,所以不能登陆,包含postmaster@XXXX.com也不可。有必要要登陆到[url]http://mail.[/url]XXXX.com/extman/ 里添加一个新帐户才干登陆。   ExtMan的默许超级办理员帐户:root@XXXX.com,初始暗码:extmail*123*,登陆成功后,主张将暗码修正,以确保安全。   九。装置courier-imap debian @ mail/tmp# apt-get  install courier-authdaemon courier-authmysql courier-base courier-imap courier-pop courier-pop-ssl courier-imap-ssl   发动: /etc/init.d/courier-authdaemon   start /etc/init.d/courier-pop3  start   下面是一些测验的办法,我总结如下:     debian @ mail/tmp# perl -MMIME::Base64 -e print encode_base64("test\@xxxx.com"); //测验的用户和域名 dGVzdEBleHRtYWlsLm9yZw   //生成的编码 debian @ mail/tmp# perl -MMIME::Base64 -e print encode_base64("test"); dGVzdA                 //生成的编码 debian @ mail/tmp#telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is ^]. 220 wader.com ESMTP Mail System ehlo test 250-mai.wader.com 250-PIPELINING 250-SIZE 14680064 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN auth login 334 VXNlcm5hbWU6 dGVzdEBleHRtYWlsLm9yZw   //生成的编码进行校验 334 UGFzc3dvcmQ6 dGVzdA                                 //是否匹配 235 2.0.0 Authentication successful mail from:<[email]test@wader.com[/email]>           //测验收信 250 2.1.0 Ok rcpt to:<test@Xxx.com> 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Test                                  //信的格局 . 250 2.0.0 Ok: queued as 7185892C quit 221 2.0.0 Bye Connection closed by foreign host.     debian @mail/tmp#telnet  mail.xxx.com 110  //测验pop3是否正常 Trying 127.0.0.1... Connected to localhost. Escape character is ^]. +OK Hello there. user [email]text@xxx.com[/email] +OK Password required. pass test       //暗码     +OK logged in.                       我的备份脚本:   mail:~# less maildb_back.sh #!/bin/bash BackupPath=/data/maildata_bk Mysql_bk_dir=$BackupPath/mysqlbk Mail_bk_dir=$BackupPath/mailbk LogFile=$BackupPath/backuplog #MailBoxDir=/var/mailbox   # define mysql variables                                                     # NewFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d).tgz DumpFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d).sql OldFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d date=5 days ago).tgz DbUser=extmail DbPasswd=xxxx DbName=extmail #   mysql backup proccess                                                 # echo "-" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "" >> $LogFile #Delete Old File if [ -f $OldFile ] then     rm -f $OldFile >> $LogFile 2>&1     echo "[$OldFile]Delete Old File Success!" >> $LogFile else     echo "[$OldFile]No Old Backup File!" >> $LogFile fi            if [ -f $NewFile ] then    echo "[$NewFile]The Backup File is exists,Cant Backup!" >> $LogFile else    cd $Mysql_bk_dir    /usr/bin/mysqldump -u $DbUser -p$DbPasswd opt $DbName > $DumpFile    tar czf $NewFile postfix$(date +%Y%m%d).sql >> $LogFile 2>&1    echo "[$NewFile]Backup Success!" >> $LogFile    rm -rf $DumpFile fi                                # #     backup mails user directories and files                                     # MailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d).tgz OldMailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d date=14 days ago).tgz                                 if [ -f $OldMailFileBk ] then     rm -rf $OldMailFileBk fi                                     if [  -f $MailFileBk ] then    echo "[$MailFileBk]The Backup File is exists,Cant Backup!" >> $LogFile else     cd /etc/     tar czf $MailFileBk postfix  >> $LogFile 2>&1 fi                                                     echo "-" >> $LogFile   异地备份脚本 mail:~# less /home/ssher/ssher.sh #!/bin/bash cd /usr/bin/ scp /data/maildata_bk/mailbk/mail$(date +%Y%m%d).tgz ssher@xxxxx:/home/bak/          //条件是树立SSH信赖 scp /data/maildata_bk/mysqlbk/postfix$(date +%Y%m%d).tgz ssher@xxxxxx:/home/bak/ #   每天进行主动的异地备份,如下: mail:~# less /etc/crontab 52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts report /etc/cron.monthly ) 00 1    * * *   root    /root/maildb_back.sh 00 3    * * *   ssher    /home/ssher/ssher.sh        
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表超凡娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章