postfix 完整搭建

合集下载

利用UbuntuExtMail30分钟配置好一个功能强大的邮件

利用UbuntuExtMail30分钟配置好一个功能强大的邮件

利用Ubuntu ExtMail 30分钟配置好一个功能强大的利用Ubuntu ExtMail 30分钟配置好一个功能强大的服务器V1.1,以下文档通过19个大的步骤进行配置,配置成功!由于网上Ubuntu ExtMail的步骤特别多,看了都头痛,在此特别给朋友们制作了一个简洁的安装文档,希望大家喜欢:)环境:Ubuntu 8.04 TLSpostfix 2.5.1ExtMail 1.2extman 1.11.安装依赖包apt-get install mysql-client-5.0 mysql-server apache2 postfix postfix-mysql postfix-doc courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl libapache2-mod-fastcgi libfcgi-perl build-essential libtool libnet-server-perl libnet-cidr-perl libberkeleydb-perl arc zoo lzop liblzo1 libstdc++5 libgd-gd2-perl libfile-tail-perl libdigest-sha1-perl libdigest-HMAC-perl libnet-ip-perl libnet-dns-perl libhtml-tagset-perl libhtml-parser-perl libio-stringy-perl libio-multiplex-perl libio-socket-ssl-perl libio-zlib-perl libnet-ssleay-perl libunix-syslog-perl libtimedate-perl libmailtools-perl libconvert-binhex-perl libconvert-tnef-perl libconvert-uulib-perl libcompress-zlib-perl libarchive-zip-perl libarchive-tar-perl perl-suid你会被询问以下问题:Create directories for web-based administration? <– NoGeneral type of mail configuration: <– Internet SiteSystem mail name: <– 2.下载extmail-1.2和extman-1.1,并修改配置下载地址:/downloadtar xvzf extmail-1.2.tar.gztar xvzf extman-1.1.tar.gzmkdir /var//extsuitemv extmail-1.2/ /var//extsuite/extmailmv extman-1.1/ /var//extsuite/extmancp /var//extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/注意,非常重要:修改/etc/postfix/mysql_virtual_*.cf,将其中的“localhost”均改为“127.0.0.1”,修改数据库配置,保证能够连到mysql3.建立相关系统用户1)新建普通用户useradd -m -d /home/hugwww -s /bin/bash hugwwwpasswd hugwww2)删除以前gid,uid为1000的用户userdel -r gaojinbo3)建立extmail所需要的用户和组groupadd -g 1000 vgroupuseradd -m -g vgroup -u 1000 -d /home/vmail -s /bin/false vuser4.修改权限chmod 755 /etc/postfix/mysql_virtual_*.cfchgrp postfix /etc/postfix/mysql_virtual_*.cfchown -R vuser:vgroup /var//extsuite/extmail/cgi/chown -R vuser:vgroup /var//extsuite/extman/cgi/cd /var//extsuite/extmail/cp webmail.cf.default webmail.cfcd /var//extsuite/extman/cp webman.cf.default webman.cf5.修改/var//extsuite/extmail/webmail.cf里的其他参数,主要变动的容见下:vi /var//extsuite/extmail/webmail.cfSYS_USER_LANG = zh_CNSYS_MYSQL_USER = extmailSYS_MYSQL_PASS = extmailSYS_MYSQL_DB = extmailSYS_MYSQL_SOCKET = /var/run/mysqld/mysqld.sockSYS_AUTHLIB_SOCKET = /var/run/courier/authdaemon/socketSYS_MAILDIR_BASE = /home/vmailSYS_MESSAGE_SIZE_LIMIT = 102400000 //注:这个选项为修改附件的大小,默认为5M,你可以自行修改,这里面改了是不行的,还要去postfix里面修改,我在下面会讲到6.修改/var//extsuite/extman/webman.cf的参数vi /var//extsuite/extman/webman.cfSYS_CAPTCHA_ON = 0 //用于关闭后台登录时的验证码SYS_MAILDIR_BASE = /home/vmailSYS_MYSQL_SOCKET = /var/run/mysqld/mysqld.sockSYS_LANG = zh_CNSYS_GROUPMAIL_SENDER = //注:这个选项是,你在后台群发后,用户收到的发件人地址,你可以自行修改7.修改/var//extsuite/extman/contrib/passwd2ext.plmy $sock = ‘/var/run/mysqld/mysqld.sock’;8.数据库初始化执行以下命令导入mysql数据库结构及初始化数据,注意必须逐行输入以下命令.请把替换成自己的密码mysql -u root -plinuxidc. < /var//extsuite/extman/docs/extmail.sqlmysql -u root -plinuxidc. < /var//extsuite/extman/docs/init.sql9.建立临时文件夹:mkdir /tmp/extmanchown -R vuser:vgroup /tmp/extman编辑rc.local,加入下面容以实现开机自动建立编辑rc.local,加入下面容以实现开机自动建立www.linuxidc.vi /etc/rc.localif [ ! -d /tmp/extman ]; thenmkdir /tmp/extmanchown -R vuser:vgroup /tmp/extmanfi10.建立上边导入mysql的的Maildir,请输入如下命令:cd /var//extsuite/extman/tools./maildirmake.pl /home/vmail//postmaster/Maildirchown -R vuser:vgroup /home/vmail//11.Postfix配置cd /etc/postfix/cp main.cf main.cf_backupvi main.cf# TLS parameterssmtpd_tls_cert_file = /etc/postfix/smtpd.certsmtpd_tls_key_file = /etc/postfix/smtpd.keysmtpd_use_tls = yes# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for# information on enabling SSL in the smtp client.mydomain = myhostname = mail.$mydomainmyorigin = $mydomainmydestination = mail.$mydomain, localhost.$mydomain, localhostalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesrelayhost =mynetworks = 127.0.0.1message_size_limit = 102400000mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = allhtml_directory = /usr/share/doc/postfix/html######### virtual config############virtual_alias_domains =virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf virtual_mailbox_base = /home/vmailvirtual_uid_maps = static:1000virtual_gid_maps = static:1000virtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_overquota_bounce = yesvirtual_mailbox_limit_override = yesvirtual_maildir_limit_message = Sorry, the your Maildir has overdrawn your diskspace quota, please free up some of spaces of your mailbox try again.proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps重启postfix/etc/init.d/postfix restart12.SMTP身份认证cd /etc/postfixopenssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509它们询问你问题Country Name (2 letter code) [AU]: //国家State or Province Name (full name) [Some-State]: //省Locality Name (eg, city) []: //城市Organization Name (eg, company) [Internet Widgits Pty Ltd]: //组织名称Organizational Unit Name (eg, section) []: 组织单位名称Common Name (eg, YOUR name) []: 通用名称Email Address []: 地址 .linuxidc.13.Apache2配置:vi /etc/apache2/sites-available/mail<VirtualHost *>ServerAdmin adminlinuxidc.ServerName mail.linuxidc.DocumentRoot /var//extsuite/extmail/htmlAlias /extmail/cgi/ /var//extsuite/extmail/dispatch.fcgi/Alias /extmail /var//extsuite/extmail/html<Ifmodule mod_fastcgi.c>FastCgiExternalServer /var//extsuite/extmail/dispatch.fcgi -host 127.0.0.1:8888 -idle-timeout240</Ifmodule><Location "/extmail/cgi">SetHandler fastcgi-script</Location>ScriptAlias /extman/cgi/ /var//extsuite/extman/cgi/Alias /extman /var//extsuite/extman/htmlErrorLog /var/log/apache2/error.log# Possible values include: debug, info, notice, warn, error, crit,# alert, emerg.LogLevel warnCustomLog /var/log/apache2/access.log combinedSuexecUserGroup vuser vgroup</VirtualHost>14.编辑/var//extsuite/extmail/dispatch-init文件:vi /var//extsuite/extmail/dispatch-initMAXFORK=10最后启动fastcgi server:/var//extsuite/extmail/dispatch-init start如果没有意外将启动10个dispatch.fcgi守护进程,可以通过以下命令将启动命令加到rc.local 中,实现自启动:echo "/var//extsuite/extmail/dispatch-init start">>/etc/rc.local15.SMTP认证1).更改saslauthdvi /etc/default/saslauthd更改如下几项START=yes //设置开机自动启动OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"2). 创建文件/etc/pam.d/smtpvi /etc/pam.d/smtp容如下:auth required pam_mysql.so user=extmail passwd=extmail host=127.0.0.1 db=extmail table=mailbox usercolumn=username passwdcolumn=password crypt=1account sufficient pam_mysql.so user=extmail passwd=extmail host=127.0.0.1 db=extmail table=mailbox usercolumn=username passwdcolumn=password crypt=1解释一下:其实就是定义一个查询的方式crypt=1或者0表示加密或者不加密注意对照你的数据库还有用户名密码请保持跟自己的一致3).由于postfix处于chroot,要想调用到saslauthd 必须更改socket文件mkdir -p /var/spool/postfix/var/run/saslauthdvi /etc/postfix/sasl/smtpd.conf创建smtpd.conf,并且容如下:pwcheck_method:saslauthdmech_list:plain loginallow_plaintext: trueauxprop_plugin: mysqlsql_hostnames: 127.0.0.1sql_user: extmailsql_password: extmailsql_database: extmaillog_level:7sql_select: SELECT password FROM mailbox WHERE username=’%u%r’and domain=’%r’4).更改main.cf 文件vi /etc/postfix/main.cf###########SMTP AUTH config###############broken_sasl_auth_clients = yessmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymous###########smtpd related config############smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_sender_login_mismatch, reject_unknown_sender_domain, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_recipient_maps5).添加用户adduser postfix sasl6).重启postfix saslauthd/etc/init.d/postfix restart/etc/init.d/saslauthd restart7).测验telnet localhost 25Trying 127.0.0.1…Connected to localhost.Escape character is ‘^]’.220 ESMTP Postfixehlo localhost250-PIPELINING250-SIZE 102400000250-VRFY250-ETRN250-STARTTLS250-AUTH PLAIN LOGIN250-AUTH=PLAIN LOGIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNauth login334 VXNlcm5hbWU6cG9zdG1hc3RlckBleHRtYWlsLm9yZw==334 UGFzc3dvcmQ6ZXh0bWFpbA==235 2.7.0 Authentication successfulquit221 2.0.0 ByeConnection closed by foreign host.如果出现Authentication successful 表示没有问题了16.POP验证vi /etc/courier/authdaemonrc#更改如下一项authmodulelist="authmysql"cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig cat /dev/null > /etc/courier/authmysqlrcvi /etc/courier/authmysqlrc#容如下:MYSQL_SERVER localhostMYSQL_USERNAME extmailMYSQL_PASSWORD extmailMYSQL_SOCKET /var/run/mysqld/mysqld.sockMYSQL_PORT 3306MYSQL_OPT 0MYSQL_DATABASE extmailMYSQL_USER_TABLE mailboxMYSQL_CRYPT_PWFIELD passwordMYSQL_UID_FIELD uidnumberMYSQL_GID_FIELD gidnumberMYSQL_LOGIN_FIELD usernameMYSQL_HOME_FIELD homedirMYSQL_NAME_FIELD nameMYSQL_MAILDIR_FIELD maildirMYSQL_QUOTA_FIELD quotaMYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\ CONCAT(‘/home/vmail/’,homedir), \CONCAT(‘/home/vmail/’,maildir), \quota, \name, \CONCAT("disablesmtpd=",disablesmtpd, \",disablesmtp=",disablesmtp, \",disablewebmail=",disablewebmail, \",disablenetdisk=",disablenetdisk, \",disableimap=",disableimap, \",disablepop3=",disablepop3, \",netdiskquota=",netdiskquota) \FROM mailbox \WHERE username = ‘$(local_part)$(domain)’配置Courier-POP3vi /etc/courier/pop3dMAILDIRPATH=/home/vmail/配置Courier-IMAPvi /etc/courier/imapdMAILDIRPATH=/home/vmail/重新启动/etc/init.d/courier-authdaemon restart/etc/init.d/courier-imap restart/etc/init.d/courier-imap-ssl restart/etc/init.d/courier-pop restart/etc/init.d/courier-pop-ssl restart测试Courier- Authlib是否能成功连接mysqlauthtest -s login extmail如果成功应该有如下显示Authentication succeeded.Authenticated: (uid 1000, gid 1000)Home Directory: /home/vmail//postmasterMaildir: /home/vmail//postmaster/Maildir/Quota: 104857600SEncrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0Cleartext Password: extmailOptions:disablesmtpd=0,disablesmtp=0,disablewebmail=0,disablenetdisk=0,disableimap=0,disablep op3=0,netdiskquota=52428800S测试pop3telnet localhost 110Trying 127.0.0.1…Connected to localhost.localdomain (127.0.0.1).Escape character is ‘^]’.+OK Hello there.user +OK Password required.pass extmail+OK logged in.list+OK POP3 clients that break here, they violate STD53..quit+OK Bye-bye.Connection closed by foreign host.如果出现问题请仔细分析日志17.图形日志extmailapt-get install mailgraphcp -r /var//extsuite/extman/addon/mailgraph_ext/ /usr/local/mailgraph_extvi /usr/local/mailgraph_ext/mailgraph-init为:MAIL_LOG=/var/log/mail.log然后复制文件cp /var//extsuite/extman/addon/mailgraph_ext/mailgraph-init /etc/init.d/mailgraphcp /var//extsuite/extman/addon/mailgraph_ext/qmonitor.pl /etc/init.d/qmonitor启动服务/etc/init.d/mailgraph start18.安装Maildropapt-get install maildropvi /etc/maildropmysql.config //创建一个文件hostname localhostport 3306database extmaildbuser extmaildbpw extmail #修改为您的密码dbtable mailboxdefault_uidnumber 1000default_gidnumber 1000uidnumber_field uidnumbergidnumber_field gidnumberuid_field usernamehomedirectory_field concat(‘/home/vmail/’,homedir,’/’)maildir_field concat(‘/home/vmail/’,maildir)quota_field quotamailstatus_field active修改/etc/maildroprcvi /etc/maildroprclogfile "/var/log/maildrop.log"手动创建日志vi /var/log/maildrop.logchown vuser:vgroup /var/log/maildrop.logchmod 766 /var/log/maildrop.logvi /etc/logrotate.d/maildrop容为下面:/var/log/maildrop.log {dailynotifemptymissingokrotate 5compresscreate 766 vuser vgroupsharedscripts}vi /etc/postfix/master.cf,注释掉原来maildrop的配置容并改为:maildrop unix - n n - - pipeflags=DRhu user=vmail argv=maildrop -w 90 -d ${user}${nexthop} ${recipient} ${user} ${extension} {nexthop}由于maildrop不支持一次接收多个收件人,因此必须在/etc/postfix/main.cf增加如下参数: vi /etc/postfix/main.cf###### Maildrop config ########maildrop_destination_recipient_limit = 1virtual_transport = maildrop:创建vi /etc/quotawarnmsg,为空间超过配额时的警告容X-Comment: Rename/Copy this file to quotawarnmsg, and make appropriate changesX-Comment: See deliverquota man page for more informationFrom: Mail Delivery System <Mailer-Daemonexample.>Reply-To: supportexample.To: Valued Customer:;Subject: Mail quota warningMime-Version: 1.0Content-Type: text/plain; charset=iso-8859-1Content-Transfer-Encoding: 7bitYour mailbox on the server is now more than 90% full. So that you can continueto receive mail you need to remove some messages from your mailbox.19.解决extman问题1)修改相关服务路径vi /var//extsuite/extman/daemon/cmd_plugin/linux-cmd2)启动服务/var//extsuite/extman/daemon/cmdserver -v -d3)写入rc.local开机自动运行echo "/var//extsuite/extman/daemon/cmdserver -v -d" >>/etc/rc.local至此,全部完成登录mail.linuxidc./extmail/ 前台,mail.linuxidc./extman/后台后台默认用户名 默认密码extmail*123*,登录前台需要自己先添加一个用户。

Postfix有关Virtual、Aliases、虚拟表等概念之间的关系

Postfix有关Virtual、Aliases、虚拟表等概念之间的关系

使用Postfix的别名、虚拟域、用MySQL数据库保存用户信息(Postfix+MySQL)等功能的用户,都会与Postfix中virtual、aliases、transport、本地投递、虚拟投递等相关概念打交道。

这篇文档就是关于这些概念之间关系的论述。

在文章最后,以若干Postfix+MySQL配置方案为例,说明这几个概念在方案中的应用。

此文档是我在学习Postfix中的一个小结,也让它与时俱进吧:)当我开始试图了解Postfix+MySQL做法时,发现自己对上述概念(相关的参数)的关系发生了混乱。

于是,我试图找出其中关系,并理顺它。

后来,我发现根据Postfix的那张大图(the Big Picture,/big-picture.html),将有助于梳理我们的思路。

下面就是按着这样的想法来写的。

注:下面关于各概念的描述并不完整,主要是从有助于讲清它们起作用的位置,以及理解相互关系的角度出发。

更详细的说明请参考相关文档。

1、首先是virtual。

从左向右看这张图,首先遇到的是virtual。

virtual是什么?virtual是一张重定向表,用于本地和非本地接收者或接收域的重定向操作。

virtual的重定向是一个地址到地址的映射(map),它只是应用在邮件的接收者信封地址(recipient envelope address)部分,没有涉及到邮件的信息头和正文部分。

这个重定向操作是在smtpd从网络上接收邮件后,由cleanup程序来完成的。

Postfix的虚拟域支持就是通过它来实现的。

virtual这张表,可以保存在数据库文件中,如/etc/postfix/virtual.db;也可以保存在数据库服务器上,如在MySQL库的一张表中;还可以保存在NIS、LDAP等等。

具体的保存方式通过virtual_maps参数值来告诉Postfix。

2、然后我们继续向右看,接下来的是transport。

Serv-u架设FTP服务器最完善最详细教程

Serv-u架设FTP服务器最完善最详细教程

Serv-u架设FTP服务器最完善最详细教程Serv-U是一种常用的FTP服务器软件,可以帮助用户快速便捷地搭建一个安全可靠的FTP服务器。

本篇文章将为您提供Serv-U的架设教程,旨在帮助读者全面了解如何使用Serv-U搭建FTP服务器,并提供详细的操作步骤和注意事项。

一、Serv-U简介Serv-U是一款功能强大的FTP服务器软件,它提供了丰富的功能和高度的安全性,广泛应用于个人、企事业单位以及各类网站。

它支持多用户多任务,在Windows、Linux等操作系统中都能够完美运行。

下面将详细介绍Serv-U的安装和配置过程。

二、Serv-U的安装1. 下载Serv-U软件首先,您需要从官方网站或其他可信的软件下载站点下载Serv-U 的安装包。

确保选择正确的操作系统版本,并下载到本地计算机。

2. 运行安装程序打开下载好的安装包,运行安装程序。

按照安装向导的提示,选择安装位置和其他相关参数。

在安装过程中,您可以根据需要自定义安装选项。

3. 完成安装一旦安装程序完成,您就可以在计算机上找到Serv-U的安装目录。

默认情况下,Serv-U的安装目录为"C:\Program Files\Serv-U"。

三、Serv-U的配置1. 启动Serv-U控制台在安装目录中找到Serv-U.exe文件,双击运行,即可启动Serv-U控制台。

在控制台界面上,您可以进行Serv-U的详细配置和管理。

2. 创建FTP站点在控制台界面上,点击"Domain"选项卡,然后点击"Add"按钮来创建一个新的FTP站点。

在弹出的对话框中,输入相关信息,包括站点名称、主目录等。

3. 配置FTP站点属性在创建FTP站点之后,您可以通过点击"Properties"按钮来配置FTP站点的属性。

包括FTP端口、允许匿名访问、最大连接数、登录限制等。

根据实际需求进行配置。

Postfix的工作原理

Postfix的工作原理

Postfix的⼯作原理传统的将所有功能都集中在同⼀个程序⾥,这种结构我们称之为“单体式设计”(monolithic).采⽤专职负责的策略,不同的功能分别交由不同的专门程序处理,这种结构称为“模块化设计”(modular)。

这些⾃成⼀格的专门程序,我们称之为组件(component)。

⼤多数组件都是以daemon 的形式存在,也就是常驻在系统内存⾥的连续动作的后台进程(background process)。

当Postfix被启动后,⾸先启动的是master daemon,它主导邮件的处理流程,同时也是其他组件的总管。

在处理邮件的过程中,master 会启动对应功能的组件来处理相关事宜,被master启动的组件,在完成交付的⼯作之后会⾃⾏结束;或者,如果组件的处理时间超过时限,或是⼯作量到达预定限度,组件也会⾃⾏结束。

master daemon会常驻在系统中,当管理员启动它时,它从main.cf和master.cf这两个配置⽂件取得启动参数。

Postfix内部收信、发信流程图整个处理流程分为三个阶段:接收邮件、将邮件排⼊队列、递送邮件。

每个阶段由⼀组独⽴的Postfix组件负责。

当⼀封邮件被收下并排⼊队列之后,队列管理器(Queue Manager)会启动适当的MDA,将邮件送到终点。

邮件如何进⼊Postfix系统邮件有四种渠道可以进⼊Postfix系统: 1、Postfix可接受来⾃本机系统的邮件(本机⽤户或⾃主进程提交的邮件)。

2、Postfix可接受⽹络传⼊的邮件(来⾃MUA或者其他MTA)。

3、已经被Postfix收下并交给MDA的邮件,被MDA传回到Postfix(通常是为了转寄到另⼀个地址)。

4、当Postfix⽆法将邮件寄到⽬的地时,⾃⼰会产⽣退信通知函。

邮件有可能在进⼊Postfix之前就被拒绝了,或者因为暂时性的故障(⽹络断线、远程服务器响应暂时性的错误等),同样的邮件可能会每隔⼀段时间就重复进⼊Postfix系统⼀次,重新递送。

搭建bugfree(傻瓜教程)

搭建bugfree(傻瓜教程)

搭建bugfree
第1步:打开VM开启mini虚拟机
第2步:启动Xftp 5,连接mini主机
第3步:把Xftp 5左边的文件(xampp-linux-1.8.3-3-installer.run)复制到右边opt文件夹
第4步:打开Xshell 5,连接mini主机
第5步:(查看是否已从Xftp导入了文件)
第6步:(给该文件开放所有权限)
第7步:(运行./xampp-linux-1.8.3-3-installer.run)
y→y→Enter→y
第8步:(启动xampp)
第9步:(为Apache开启80端口)
第10步:(刷新并重启iptables)
第11步:(安装unzip解压命令)
第12步:把Xftp 5左边的bugfree压缩包复制到右边opt文件夹
第13步:(查看是否已从Xftp导入了压缩包,并解压bugfree.zip)
第14步:(重命名解压后的文件并移动)
第15步:(到htdocs目录下创建新目录BugFile)
第16步:(给opt目录开放所有权限)
第17步:
第18步:(搭建成功界面)
(徐志鹏整理)。

python服务器环境搭建(3)——参数配置

python服务器环境搭建(3)——参数配置

python服务器环境搭建(3)——参数配置阅读⽬录(Content) 前⾯我们已安装好了python服务器运⾏所需要的相关软件,⽽最重要最繁琐的就是参数配置,写这篇就踩了好多坑,花了好多时间,遇到了各种各样的问题。

好了费话少说,直接进⼊本篇话题。

⼀、让你的python代码跑起来 既然我们要配置的是python服务器,那⾸先我们要做的第⼀步是,放上我们的python代码,看看能否运⾏并访问 先上代码,将下⾯代码粘贴到记事本上并存储为main.py(这个⽂名可以随便起,我存储的格式为ANSI格式,即记事本默认的格式)#!/usr/bin/evn python# coding=utf-8from bottle import default_app, get, runfrom beaker.middleware import SessionMiddleware@get('/index/')def callback():return 'Hello World!'if __name__ == '__main__':app_argv = SessionMiddleware(default_app())run(app=app_argv, host='0.0.0.0', port=8088, debug=True, reloader=True)else:application = SessionMiddleware(default_app()) 我们为了⽅便以后对服务器的管理,需要创建⼀个指定的⽂件夹(如果有挂载新硬盘的,可以将这个⽂件夹绑定到该⽬录),将⽇志、数据库、web站、后台服务、svn等内容统⼀放到指定⽂件夹下⾯ ⾸先在根⽬录下创建⼀个data⽂件夹(后⾯的各种⽇志、web站点等全都放在这⾥统⼀管理,以后我们要查找时就很⽅便了) 输⼊命令:mkdir /data 创建python web存储⽬录:mkdir /data/www 创建测试⽬录:mkdir /data/www/test 然后使⽤SSH的上传⼯具,上传刚刚创建好的main.py⽂件到www⽬录下的test⽂件夹 后⾯的上传⽤这个上传⼯具处理(也可以直接使⽤vi进⾏编辑)不再截图 然后我们运⾏:python /data/www/test/main.py (或进⼊test⽬录运⾏:python main.py) 运⾏后会显⽰ImportError: No module named bottle错误,这是因为我们的程序调⽤了bottle包,⽽我们未安装这个依赖包,需要安装后程序才能正常运⾏,以后在使⽤python中碰到这种情况,直接输⼊pip install xxx即可 安装bottle包:pip install bottle 安装beaker包:pip install beaker 然后再次输⼊:python main.py 就会发现python web服务运⾏起来了 然后关闭防⽕墙:systemctl stop firewalld (如果浏览器访问不了,可以运⾏这个命令来关闭防⽕墙) 打开浏览器输⼊:http://192.168.0.128:8088/index/ 就可以看到Hello World!了 为了⽅便后⾯的测试,我们按Ctrl+C,关闭刚才python启动的main.py服务 ⼆、使⽤supervisord来管理python进程 supervisord默认配置⽂件存放路径是/etc/⽬录下⾯,安装完成后配置⽂件是不存在的,需要使⽤命令⽣成或我们⾃⼰放⼀个进去,我们先配置⼀个简单的不使⽤uwsgi的配置⽂件 ⽂件名称:supervisord.conf (我存储的格式为ANSI格式,即记事本默认的格式)[unix_http_server]file=/tmp/supervisor.sock ; (the path to the socket file)[supervisord]logfile=/data/logs/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)logfile_maxbytes=10MB ; (max main logfile bytes b4 rotation;default 50MB)logfile_backups=2 ; (num of main logfile rotation backups;default 10)loglevel=info ; (log level;default info; others: debug,warn,trace)pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)nodaemon=false ; (start in foreground if true;default false)minfds=1024 ; (min. avail startup file descriptors;default 1024)minprocs=200 ; (min. avail process descriptors;default 200)[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket[program:test]command=python /data/www/test/main.py ; supervisord将要执⾏的运⾏python服务的命令directory=/data/www/teststdout_logfile=/data/logs/supervisord/test_supervisord.log ; supervisord当前这个test服务运⾏产⽣的⽇志存储路径,⽅便我们查看运⾏情况socket-timeout=3autostart=trueautorestart=trueredirect_stderr=truestopsignal=QUIT 使⽤上传⼯具上传到/etc/supervisord.conf 为了规范⽇志管理,我们在data⽂件夹下继续创建对应的⽇志⽂件夹,以后查找supervisord⽇志就可以在下⾯创建的⽂件夹中查看了 输⼊命令:mkdir /data/logs 输⼊命令:mkdir /data/logs/supervisord 由于supervisord⽬前只⽀持python2,所以运⾏时需要⽤python2来启动 启动supervisord服务:/usr/bin/python2.7 /usr/bin/supervisord 我们继续在浏览器中输⼊http://192.168.0.128:8088/index/ 可以发现还是可以正常访问,看到Hello World!(前⾯执⾏python/data/www/test/main.py后,按Ctrl+C就直接退出了,⽤浏览器是⽆法正常访问的,现在的访问是supervisord启动的) 使⽤supervisord启动的python进程可以发现,我们⽤kill xxx命令来直接关闭python进程,关闭后supervisord会重新启动新的进程,也就是说不kill掉supervisord进程,是⽆法杀死supervisord启动的python进程的 PS:由于python2.7.5与python3.5.2并存,在对supervisord配置进⾏修改以后,使⽤命令:/usr/bin/supervisord -v执⾏时,会出现 ImportError: No module named 'supervisor' 这个错误,虽然我们前⾯⽤的是python2.7.5来启动supervisord服务的,但⽣成执⾏命令时,默认还是⽤python这个链接,所以我们需要对/usr/bin/supervisord和/usr/bin/supervisorctl进⾏修改 执⾏命令:vi /usr/bin/supervisord 将第⼀⾏的#!/usr/bin/python 改为 #!/usr/bin/python2.7.5 执⾏命令:vi /usr/bin/supervisorctl 将第⼀⾏的#!/usr/bin/python 改为 #!/usr/bin/python2.7.5 我们再执⾏:/usr/bin/supervisord -v时就正常了 三、将nginx与supervisord关联起来(使⽤代理⽅式,⾮uwsgi) ⾸先我们要为nginx创建对应的访问账号 输⼊命令:/usr/sbin/groupadd -f www 输⼊命令:/usr/sbin/useradd -g www www 为nginx创建对应的⽇志管理⽂件夹 输⼊命令:mkdir /data/logs/nginx 因为nginx的配置默认全部是在nginx.conf⾥设置的,⽹站多时管理不⽅便,所以我们需要创建⼀个⽂件夹,将每个独⽴的⽹站配置放在⾥⾯ 创建nginx配置统⼀管理⽂件夹:mkdir /usr/local/nginx/conf/vhost 修改/usr/local/nginx/conf/nginx.conf配置⽂件内容,替换成下⾯参数user www www;worker_processes 1;worker_rlimit_nofile 10240;error_log /data/logs/nginx/error.log error;events {use epoll;worker_connections 10240;}http {log_format main '[$time_local] $remote_addr $upstream_addr $status $body_bytes_sent [$request_time] ''"$request" "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';include mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;tcp_nodelay on;server_tokens off;include vhost/*.conf;} 将test.conf上传到刚创建的/usr/local/nginx/conf/vhost/⽬录下,具体内容如下(使⽤80端⼝访问,将代理地址指定前⾯配置的8088端⼝):server {listen 80;charset utf-8;root /data/www/test;server_name 192.168.0.128;location / {proxy_pass http://127.0.0.1:8088;}access_log /data/logs/nginx/test_access.log main;} PS:在使⽤之前,我们需要重新⼀次服务器,不然可能会出现端⼝被占⽤访问出现404的问题,重启后就正常 启动nginx服务: /usr/local/nginx/sbin/nginx 启动supervisord服务:/usr/bin/python2.7 /usr/bin/supervisord 如果修改了nginx配置内容,需要重新启动nginx才能⽣效,重启命令: /usr/local/nginx/sbin/nginx 如果启动后没有出现错误信息,就表⽰启动成功了,可以使⽤命令来查询启动情况:ps -ef | grep nginx 我们在浏览器中输⼊http://192.168.0.128/index/可以发现Hello World!访问正常(PS:可以发现,我们直接访问80端⼝完全没有问题) 四、使⽤nginx+supervisord+uwsgi来管理python web服务 ⾸先,我们让uwsgi运⾏起来 根据官⽹(https://uwsgi-docs.readthedocs.io/en/latest/)说明,我们还需要安装python-dev插件 输⼊命令:yum install python-dev 第⼀个Hello World!例⼦: 输⼊命令:vi /tmp/foobar.py 然后点击键盘 i 进⼊编辑模式,将下⾯的代码粘贴进vi编辑器,然后按Esc键,按Shift+:,输⼊wq+回车键,保存foobar.py⽂件def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"] 将这个例⼦运⾏起来:uwsgi --http :9090 --wsgi-file /tmp/foobar.py 我们在浏览器中输⼊⽹址:http://192.168.0.128:9090/ 就可以看到Hello World了 我们按Ctrl+C,关闭刚才⽤uwsgi启动的main.py服务 为了⽅便uwsgi配置的管理,我们需要在etc⽬录下创建uwsgi⽂件夹,⽤来存储配置⽂件 输⼊命令:mkdir /etc/uwsgi 创建uwsgi⽇志⽂件夹:mkdir /data/logs/uwsgi 创建配置⽂件,并将它上传到/etc/uwsgi⽬录下,配置⽂件名:test.ini,内容如下:[uwsgi]socket = 127.0.0.1:8088chdir = /data/www/test/wsgi-file = /data/www/test/main.pylimit-as = 512reload-on-as = 256reload-on-rss = 192processes = 2max-requests = 1000pythonpath = /data/www/test/daemonize = /data/logs/uwsgi/test_uwsgi.loglog-maxsize = 10000000disable-logging = truemaster = truevacuum = trueno-orphans = true 修改/etc/supervisord.conf配置⽂件内容,将command=python /data/www/test/main.py修改为command=/usr/local/bin/uwsgi/etc/uwsgi/test.ini[unix_http_server]file=/tmp/supervisor.sock ; (the path to the socket file)[supervisord]logfile=/data/logs/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)logfile_maxbytes=10MB ; (max main logfile bytes b4 rotation;default 50MB)logfile_backups=2 ; (num of main logfile rotation backups;default 10)loglevel=info ; (log level;default info; others: debug,warn,trace)pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)nodaemon=false ; (start in foreground if true;default false)minfds=1024 ; (min. avail startup file descriptors;default 1024)minprocs=200 ; (min. avail process descriptors;default 200)[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl]serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket[program:test]command=/usr/local/bin/uwsgi /etc/uwsgi/test.inidirectory=/data/www/teststdout_logfile=/data/logs/supervisord/test_supervisord.logsocket-timeout=3autostart=trueautorestart=trueredirect_stderr=truestopsignal=QUIT 修改nginx的配置⽂件/usr/local/nginx/conf/vhost/test.confserver {listen 80;charset utf-8;root /data/www/test;server_name 192.168.0.128;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8088;}access_log /data/logs/nginx/test_access.log main;} 重启服务命令:/usr/local/nginx/sbin/nginx -s reload(如果nginx服务没有启动,就使⽤这个命令:/usr/local/nginx/sbin/nginx ) 另外,如果我们修改了supervisord的配置⽂件,则需要运⾏下⾯命令重启服务(如果你⼜重启了服务器,则需要重新启动supervisord 服务:/usr/bin/python2.7 /usr/bin/supervisord,否则不⽤执⾏这个命令) 载⼊刚刚修改过的配置信息:/usr/bin/supervisorctl reread (运⾏后才可以载⼊内存) 重启全部supervisord服务:/usr/bin/supervisorctl reload (运⾏这个将会重启全部服务,会⽐较慢) PS:其他supervisord命令说明 启动或重启配置修改项对应的服务:/usr/bin/supervisorctl update (有时可能会启动失败,需要需要其他⽅式启动) 我们更新了python⽂件,如果没有重启对应的服务修改是不⽣效的,即访问时还是旧的代码功能,需要重启对应的服务才⾏,⽐如现在我们的supervisord服务名称叫做test,那么可以使⽤下⾯命令来重启对应的uwsgi服务 重启test的uwsgi服务:/usr/bin/supervisorctl restart test (启动服务命令:/usr/bin/supervisorctl start test) 我们在浏览器中输⼊⽹址:http://192.168.0.128/index/ 就可以看到使⽤nginx+supervisord+uwsgi+python(bottle框架)运⾏的Hello World了----------------------------------------2017-3-30 16:06修改更新--------------------------------------------------- ps:之前使⽤/usr/bin/supervisorctl update重启supervisord,可能浏览器访问时出现502 Bad Gateway,这时我们需要查看supervisord和uwsgi⽇志,看看⽇志⾥有什么错误提⽰。

Postgres-XC 1.0.4安装

安装环境准备一台Centos 6.5 GNOME 2.28.2安装配置如下图:IP 角色端口Nodename 安装目录192.168.199.151 GTM 6666 gtm /pgxc_data/gtm192.168.199.151 Coordinator 1921 coord1 /pgxc_data/coordinator/cd1192.168.199.151 Coordinator 1925 coord2 /pgxc_data/coordinator/cd2192.168.199.151 Datanode 15431 db1 /pgxc_data/datanode/dn1192.168.199.151 Datanode 15432 db2 /pgxc_data/datanode/dn2有条件的可以把这个角色分别安装在不同主机上。

安装配置1)创建用户#groupadd pgxc#useradd pgxc -g pgxc#passwd pgxc2)安装#tar -xzvf pgxc-v1.0.4.tar.gz#cd postgres-xc-1.0.4#./configure –prefix=/usr/local/pgsql_xc#make#make install3)创建存放路径#mkdir -p /pgxc_data/gtm#mkdir -p /pgxc_data/coordinator/cd1#mkdir -p /pgxc_data/coordinator/cd2#mkdir -p /pgxc_data/datanode/dn1#mkdir -p /pgxc_data/datanode/dn2#chown -R pgxc:pgxc /pgxc_data4)配置环境变量#su – pgxc#vi .bash_profileexport PGHOME=/usr/local/pgsql_xcexport LANG=en_US.utf8export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib export PATH=$PGHOME/bin:$PATH:.export MANPATH=$PGHOME/share/man:$MANPATH#source .bash_profile5)初始化节点#initgtm -Z gtm -D /pgxc_data/gtm#initdb -D /pgxc_data/coordinator/cd1 –nodename coord1 #initdb -D /pgxc_data/coordinator/cd2 –nodename coord2 #initdb -D /pgxc_data/datanode/dn1 –nodename db1#initdb -D /pgxc_data/datanode/dn2 –nodename db26)配置节点配置gtm节点vi /pgxc_data/gtm/gtm.confnodename = ‘gtm’listen_addresses = ‘*’port = 6666startup = ACT配置 coordinator 节点vi /pgxc_data/coordinator/cd1/postgresql.conf #————————————listen_addresses = ‘*’port = 1921max_connections = 100# DATA NODES AND CONNECTION POOLING #———————————————-pooler_port = 6667#min_pool_size = 1max_pool_size = 100# GTM CONNECTION#—————————–gtm_host = ‘192.168.199.151’gtm_port = 6666pgxc_node_name = ‘coord1’vi /pgxc_data/coordinator/cd1/pg_hba.conf# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 192.168.199.151/32 trusthost all all 0.0.0.0/0 md5vi /pgxc_data/coordinator/cd2/postgresql.conf #————————————listen_addresses = ‘*’port = 1925max_connections = 100# DATA NODES AND CONNECTION POOLING #———————————————-pooler_port = 6668#min_pool_size = 1max_pool_size = 100# GTM CONNECTION#—————————–gtm_host = ‘192.168.199.151’gtm_port = 6666pgxc_node_name = ‘coord2’vi /pgxc_data/coordinator/cd2/pg_hba.conf# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 192.168.199.151/32 trusthost all all 0.0.0.0/0 md5配置 datanode 节点vi /pgxc_data/datanode/dn1/postgresql.conf #————————————listen_addresses = ‘*’port = 15431max_connections = 100# GTM CONNECTION#—————————–gtm_host = ‘192.168.199.151’gtm_port = 6666pgxc_node_name = ‘db1’vi /pgxc_data/datanode/dn1/pg_hba.conf# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 192.168.199.151/32 trusthost all all 0.0.0.0/0 md5vi /pgxc_data/datanode/dn2/postgresql.conf #————————————listen_addresses = ‘*’port = 15432max_connections = 100# GTM CONNECTION#—————————–gtm_host = ‘192.168.199.151’gtm_port = 6666pgxc_node_name = ‘db2’vi /pgxc_data/datanode/dn2/pg_hba.conf# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 192.168.199.151/32 trusthost all all 0.0.0.0/0 md57)启动节点启动顺序gtm + (gtmstandby) + (gtmproxy) + datanode + coordinator 启动gtm#gtm -D /pgxc_data/gtm &#ps -ef|grep gtm#gtm_ctl status -z gtm -D /pgxc_data/gtm启动数据节点#postgres -X -D /pgxc_data/datanode/dn1 &#postgres -X -D /pgxc_data/datanode/dn2 &#ps -ef|grep pgxc启动coordinator节点#postgres -C -D /pgxc_data/coordinator/cd1 &#postgres -C -D /pgxc_data/coordinator/cd2 &8)注册节点在coord1上注册:#psql -p 1921 postgresselect * from pgxc_node;create node coord2 with(TYPE=coordinator,HOST=’192.168.199.151′,PORT=1925); create node db1 with(TYPE=datanode,HOST=’192.168.199.151′,PORT=15431,primary); create node db2 with(TYPE=datanode,HOST=’192.168.199.151′,PORT=15432);alter node coord1 with(TYPE=’coordinator’,HOST=’192.168.199.151′,PORT=1921); select pgxc_pool_reload();在coord2上注册:#psql -p 1925 postgresselect * from pgxc_node;create node coord1 with(TYPE=coordinator,HOST=’192.168.199.151′,PORT=1921); create node db1 with(TYPE=datanode,HOST=’192.168.199.151′,PORT=15431,primary); create node db2 with(TYPE=datanode,HOST=’192.168.199.151′,PORT=15432);alter node coord2 with(TYPE=’coordinator’,HOST=’192.168.199.151′,PORT=1925); select pgxc_pool_reload();9)停止节点停止顺序coordinator+datanode+(gtmproxy)+(gtmstandby)+gtm#pg_ctl stop -D /pgxc_data/datanode/dn1 -Z datanode -m fast#pg_ctl stop -D /pgxc_data/datanode/dn2 -Z datanode -m fast#pg_ctl stop -D /pgxc_data/coordinator/cd1 -Z coordinator -m fast#pg_ctl stop -D /pgxc_data/coordinator/cd2 -Z coordinator -m fast#gtm_ctl stop -D /pgxc_data/gtm -Z gtm -m fast验证测试在coord1上创建一个数据库,并建立一个新表#psql -p 1921 postgrescreate database pgxc_test;\c pgxc_test;create table test_xc (id integer,name varchar(32));insert into test_xc select generate_series(1,100),'pgxc_test';在coord2上查询,看是否能够查询到在coord1上新建的数据库和表在db1上查看在db2上查看这说明我们在coordinator上是以distribute切片方式建的表,数据分别放在datanode上。

MIME协议及邮件格式分析

电子邮件也许是一个Internet上的流行最广泛的应用。

也是我们现在的大多数网络办公流程的基础。

各种邮件服务器很多,但都大都遵循以1982年出版的RFC822--《ARPA网络文本信息格式标准(STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES)》为基础的一系列邮件格式的规定。

RFC(The Requests for Comments)是用来规定互联网工作标准的文档。

我们使用的时候并没有注意到这些协议在我们的邮件通信过程中默默的发挥着的作用,这丝毫也不能减低这些作用的重要性。

邮件内部还有很多不为人知的秘密。

在RFC822中规定一封信包括一个必须的多个头部域(header fields)和一个可选的体部(body)组成。

从一封信头开始至第一个空行都是头部。

头部定义了一个邮件的各项基本要素,路由信息等内容。

在Outlook Express中选定一封信看它的属性。

在详细资料选项卡中显示的就是这封邮件的头部内容。

也可以选定一封信,另存为一个.eml文件。

由于文件是一个纯文本文件,用一般的编辑器打开就可以看到邮件的内容。

头部有各个头部域组成,每一个头部域都包括域名(field-name)和域体(field-body),它们之间以":"分隔。

每一个头部域都可以看作由ASCII码字符组成的独立的文本。

常见的头部域包括:"Return-Path", "Received", "Date", "From", "Subject", "Sender","To", "cc","MIME-Version"等。

各头部域之间没有规定顺序。

就像各个域的名字一样。

他们表示的具体意义也不同。

如何配置某台DOMINO服务器作为外发SMTP_接收SMTP邮件服务器

如何配置某台DOMINO服务器作为外发SMTP/接收SMTP邮件服务器疑问如何配置某台DOMINO服务器作为外发SMTP/接收SMTP邮件服务器答案在多个domino服务器环境里面,指定某个DOMINO服务器作为外发SMTP/接收SMTP邮件服务器:1. Server1和Server2是同一个Notes域中的两台服务器,共享一个Domino目录,属于同一个Notes命名网络域。

2. Server1为所有的内部用户服务,用户收发邮件都是用该服务器。

3. Server2起的作用是:1) 接收其它Internet SMTP服务器发给本系统()的邮件,然后转交给Server12) 单位用户向Internet发送的邮件由Server1转发给Server2,再由Server2发送到Internet4. DNS中的MX记录指向Server2具体配置:Server1:1. 服务器文档:禁用SMTP任务,设置标准的Internet主机名。

如果单位的邮件系统只有唯一的域名,则不必设置全球网络域文档,通过服务器的全限定主机名即可确定邮件系统的域名,服务器的全限定主机名为:服务器名.域名,如:2. 创建配置文档:在配置文档的“路由器/SMTP”页签的“基本”栏目中,设置“在本地Internet网络域之外发送消息时所用的SMTP”项目为“禁用”。

Server1不直接向外发送Internet邮件。

所有的外出邮件均通过Notes协议先发送到Server2,然后由Server2转出。

3. 如果Server1和Server2不在同一个Notes命名网络域,则需要创建Server1和Server2之间的双向Notes邮件连接文档。

Server2:1. 启用SMTP侦听任务,设置标准的Internet主机名:2. 修改Server2的配置文档,Server2直接向外发送Internet邮件:在配置文档的“路由器/SMTP”页签的“基本”栏目中,设置“在本地Internet网络域之外发送消息时所用的SMTP”项目为“启用”。

iredmail移动postfix日志maillog位置方法

iredmail移动postfix⽇志maillog位置⽅法今天看看postfix邮件服务器的发送⽇志,系统默认的分区 /var 由于以前服务器安装的时候没有规划好,所以在有⼤量邮件发送任务的时候磁盘会很紧张,说不定会什么时候会把磁盘撑满!这次就把位置更改到其他分区空间充⾜的地⽅了,准备移动到/home/opt/iredmail/log/maillog/maillog⾥⾯去。

打开/etc/rsyslog.conf将mail.* /var/log/maillog 改为:mail.* /home/opt/iredmail/log/maillog/maillog 保存退出。

重启服务service rsyslog restart接下来更改⽇志定期分割的配置⽂件/etc/logrotate.d/syslog:修改 /etc/logrotate.d/syslog将/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript}更改为/var/log/messages /var/log/secure /home/opt/iredmail/log/maillog/maillog /var/log/spooler /var/log/boot.log /var/log/cron {sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript}这就完成了 重启服务service rsyslog restart。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

搭建Postfix邮件服务器 1 将sendmail服务停止 [root@mail ~]# service sendmail stop //停止sendmail服务 Shutting down sm-client: [ OK ] Shutting down sendmail: [ OK ]

2 设置主机名为mail.cyq.com

[root@localhost Server]#vim /etc/sysconfig/network HOSTNAME=mail.cyq.com//主机名 [root@localhost Server]#reboot //重启系统使修改生效

3 安装postfix和bind ,配置dns

[root@localhost Server]# rpm -ivh postfix-2.3.3-2.1.el5_2.i386.rpm [root@mail Server]# rpm -ivh postfix-2.3.3-2.1.el5_2.i386.rpm [root@mail Server]# rpm -ivh bind-9.3.6-4.P1.el5_4.2.i386.rpm Warning: bind-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOKEY, keyD 37017186 Preparing... ########################################### [100%] 1:bind ########################################### [100%] [root@mail Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm warning: bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm: Header V3 DSA signature: NOK, key ID 37017186 Preparing... ########################################### [100%] 1:bind-chroot ########################################### [100%] [root@mail ~]# cp /usr/share/doc/bind-9.3.6/sample/etc/named.conf /var/named/chroot/etc/ [root@mail ~]# vim /var/named/chroot/etc/named.conf options { directory "/var/named"; }; zone "cyq.com"{ type master; file "cyq.com.zone"; };

[root@mail~]#cp/usr/share/doc/bind-9.3.6/sample/var/named/localhost.zone /var/named/chroot/var/named/cyq.com.zone [root@mail ~]# vim /var/named/chroot/var/named/cyq.com.zone //设置dns @ IN NS linux.cyq.com. linux IN A 192.168.1.104 cyq.com.IN MX 10 mail.cyq.com. mail IN CNAME linux.cyq.com. [root@mail ~]# service named start Starting named: [ OK ] [root@mail ~]# chkconfig named on [root@mail ~]# host mail.cyq.com //尝试dns解析 mail.cyq.com is an alias for linux.cyq.com. linux.cyq.com has address 192.168.1.103 [root@mail ~]# nslookup > mail.cyq.com Server: 127.0.0.1 Address: 127.0.0.1#53

mail.cyq.com canonical name = linux.cyq.com. Name: linux.cyq.com Address: 192.168.1.103

4 配置postfix [root@mail ~]# vim /etc/postfix/main.cf myhostname = mail.cyq.com mydomain = cyq.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, $mydomain mynetworks = 192.168.1.0, 127.0.0.0/8 relay_domains = cyq.com wq—退出

5 在postfix配置虚拟别名

#virtual virtual_alias_domains = sina.com virtual_alias_maps = hash:/etc/postfix/virtual //在main.cf文件中写入这两天 [root@mail ~]# vim /etc/postfix/virtual //配置virtual

[root@mail ~]# postfix reload postfix/postfix-script: refreshing the Postfix mail system [root@mail ~]# vim /etc/postfix/main.cf alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases//检查postfix配置文件中有这两条

[root@mail ~]# vim /etc/aliases//配置用户别名 mail: mail,mail1,mail2,mail3 [root@mail ~]# postalias /etc/aliases [root@mail ~]# postfix reload postfix/postfix-script: refreshing the Postfix mail system

6 配置smtp

[root@mail ~]# rpm -qa | grepsasl cyrus-sasl-plain-2.1.22-5.el5_4.3 cyrus-sasl-lib-2.1.22-5.el5_4.3 cyrus-sasl-2.1.22-5.el5_4.3 [root@mail ~]# saslauthd -v saslauthd 2.1.22 authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap [root@mail ~]# vim /etc/sysconfig/saslauthd MECH=shadow //将认证方式改为shadow [root@mail ~]# /etc/init.d/saslauthd start Starting saslauthd: [ OK ] [root@mail ~]# chkconfig --level 35 saslauthd on [root@mail ~]# useradd mail1 //创建一个mail1用户,用来测试 [root@mail ~]# passwd mail1 Changing password for user mail1. New UNIX password: BAD PASSWORD: it is too simplistic/systematic Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@mail ~]# testsaslauthd -u mail1 -p '123456' 0: OK "Success." //验证成功 在main.cf 中加入如下配置。 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = '' smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes smtpd_client_restrictions = permit_sasl_authenticated smtpd_sasl_security_options = noanonymous [root@mail ~]# postfix reload //重新加载postfix [root@mail ~]# telnet mail.cyq.com 25 //测试 Trying 192.168.1.104... Connected to mail.cyq.com (192.168.1.104). Escape character is '^]'. 220 mail.cyq.com ESMTP Postfix ehlo cyq.com 250-mail.cyq.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME

相关文档
最新文档