热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

配置Postfix+extmail+courier-imap邮件服务器

一.首先介绍安装环境:OS:centos5.4最小化安装,选择了组件base,devlopmentlibrariesdevelopmenttoolseditorstext-baseinternet这几个组件,其他的一概不

一.首先介绍安装环境:

OS:centos5.4最小化安装,选择了组件 base,devlopment libraries development tools editors text-base internet 这几个组件,其他的一概不选。安装系统完毕,直接进行yum update -y &升级。
在终端输入setup命令 选择firewall configuration 将security level 与SELinux 改为disabled,目的是为了避免在安装调试时产生不必要的麻烦,在系统安装完成后,可以自己去调试安全部分,在这里将不作详细介绍。

二.组件选择说明:
我们能用RPM 安装的,我们将采用rpm 安装,如果rpm没有的,我们将创建自己的rpm。部分软件简介:
1、AMP ---apache(web服务) 、mysql(数据库)、php(非必需) 的简称
2、postfix --mta 邮件系统核心
3、courier-authlib--一个为courier-imap,maildrop,sasl2 提供用户信息的后台进程序
4、courier-imap --提供pop3,pop3s,imap,imaps 服务的程序
5、dspam clamd --提供内容过滤   
6、extmail --一个著名的webmail程序
7、extman --与extmail集成的后台管理程序

三:组件安装
1、安装AMP
[root@localhost ~]# yum -y install httpd httpd-devel mysql mysql-devel mysql-server php php-xml php-cli php-pdo php-mbstring php-mcrypt php-gd php-common php-devel php-mysql
修改启动配置并启动
[root@localhost ~]# chkconfig --level 345 mysqld on
[root@localhost ~]# chkconfig --level 345 httpd on
[root@localhost ~]# service mysqld start
[root@localhost ~]# service httpd start

2.下载extman(http://www.extmail.org/cgi-bin/download.cgi)
[root@localhost ~]# tar zxf extman-1.1.tar.gz
[root@localhost ~]# cd extman-1.1/docs/
[root@localhost docs]# mysql -uroot [root@localhost docs]# mysql -uroot

3、RPM 简介
下面我们将采用rpm 的方式安装软件
/usr/src/redhat/SPEC spec 文件夹,通常是rpm文件夹
/usr/src/redhat/RPMS 是生成rpm 的文件,下面还有i368,i486 等子文件夹,一般我们用i386 架构
/usr/src/redhat/SOURCE 源文件文件夹
为了安装时切换目录的方便,我们将目录存放到一个shell变量里。
[root@localhost ~]# export RPMS=/usr/src/redhat/RPMS
[root@localhost ~]# export SOURCE=/usr/src/redhat/SOURCES
[root@localhost ~]# export SPEC=/usr/src/redhat/SPECS
在下面安装过程中,大家要记住cd $RPMS 与cd /usr/src/redhat/RPMS 的目的是一样的,只是shell变量的替换。

4、安装authlib (courier-authlib-0.63.0)
A、安装依懒的包
[root@localhost ~]# yum -y install postgresql-devel expect libtool-ltdl-devel
[root@localhost ~]# wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.63.0.tar.bz2
[root@localhost ~]# tar xjf courier-authlib-0.63.0.tar.bz2
[root@localhost ~]# cd courier-authlib-0.63.0
[root@localhost courier-authlib-0.63.0]# cp courier-authlib.spec $SPEC
[root@localhost courier-authlib-0.63.0]# cd ..
[root@localhost ~]# cp courier-authlib-0.63.0.tar.bz2 $SOURCE
[root@localhost ~]# cd $SPEC
[root@localhost SPECS]# rpmbuild -bb courier-authlib.spec (创建rpm文件)
B、安装生成的rpm
[root@localhost SPECS]# cd $RPMS/i386
[root@localhost i386]# rpm -ivh courier-authlib-0.63.0-1.i386.rpm
[root@localhost i386]# rpm -ivh courier-authlib-devel-0.63.0-1.i386.rpm
[root@localhost i386]# rpm -ivh courier-authlib-mysql-0.63.0-1.i386.rpm
C、配置authlibdaemon
[root@localhost i386]# cd /etc/authlib/
[root@localhost authlib]# mv authdaemonrc authdaemonrc.bak
[root@localhost authlib]# vim authdaemonrc
输入下面的内容:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemOns=10
authdaemOnvar=/var/spool/authdaemon
DEBUG_LOGIN=2
DEFAULTOPTIOnS="wbnodsn=1"
LOGGEROPTS=""
D、配置authmysqlrc
[root@localhost authlib]# mv authmysqlrc authmysqlrc.bak
[root@localhost authlib]# vim authmysqlrc
输入下面的内容:
MYSQL_SERVER    localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_PORT      0
MYSQL_SOCKET    /var/lib/mysql/mysql.sock
MYSQL_OPT       0
MYSQL_DATABASE extmail

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)'

E、启动authlib

[root@localhost ~]# service courier-authlib start
Starting Courier authentication services: authdaemond
[root@localhost ~]# chmod 777 /var/spool/authdaemon/

5.安装courier-imap
由于courier-imap 不能用root身份生成rpm那么我们新建一个普通用户,并创建一个rpm环境
[root@localhost ~]# useradd yiyou 在这里添加自己的用户
软件包依懒需要安装openldap-server,rpm创建完成后可以删除
[root@localhost ~]# yum -y install openldap-servers
[root@localhost ~]# su - yiyou  
[yiyou@localhost ~]$ mkdir -p rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[yiyou@localhost ~]$ vim ~/.rpmmacros
输入内容:
%_topdir /home/yiyou/rpm
[yiyou@localhost ~]$ wget http://prdownloads.sourceforge.net/courier/courier-imap-4.7.0.tar.bz2
[yiyou@localhost ~]$ cp courier-imap-4.7.0.tar.bz2 rpm/SOURCES/
[yiyou@localhost ~]$ tar xjf courier-imap-4.7.0.tar.bz2
[yiyou@localhost ~]$ cd courier-imap-4.7.0
[yiyou@localhost courier-imap-4.7.0]$ cp courier-imap.spec ../rpm/SPECS/
[yiyou@localhost courier-imap-4.7.0]$ cd ../rpm/SPECS/
编辑courier-imap.spec 将下面的内容:
%if %suse_version
BuildRequires: rpm >= 3.0.5 /usr/bin/sed openldap2 openldap2-devel %([ %{suse_version} -gt 819 ] && echo /usr/include/fam.h)
%else
BuildRequires: rpm >= 4.0.2 sed /usr/include/fam.h openldap-devel openldap-servers
%endif
改为:将此处fam.h 去掉 此处好像没有openldap相关选项 2010-1-12
%if %suse_version   在这里好像提示没有安装openldap-server yum install openldap* 还真没装
BuildRequires: rpm >= 3.0.5 /usr/bin/sed openldap2 openldap2-devel
%else
BuildRequires: rpm >= 4.0.2 sed openldap-devel openldap-servers
%endif
创建rpm
[yiyou@localhost SPECS]$ rpmbuild -bb courier-imap.spec
完成rpm后,输入exit退出当前用户。
[root@localhost ~]# rpm -ivh /home/yiyou/rpm/RPMS/i386/courier-imap-4.7.0-1.i386.rpm
[root@localhost ~]# service courier-imap start

6.安装cyrus-sasl

[root@localhost ~]# yum install -y cyrus-sasl-devel cyrus-sasl-plain cyrus-sasl cyrus-sasl-lib
A.配置sasl2
创建/usr/lib/sasl2/smtpd.conf 文件,输入下面的内容:
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket

7、安装postfix 升级至2.6.5
A、下载软件包
[root@localhost i386]# cd
[root@localhost ~]# wget http://ftp.wl0.org/official/2.6/SRPMS/postfix-2.6.5-1.src.rpm
[root@localhost ~]# rpm -ivh postfix-2.6.5-1.src.rpm
[root@localhost ~]# cd $SPEC
编辑postfix.spec 修改下面的选项
%define distribution rhel-5.0
%define with_mysql_redhat 1
%define with_sasl         2
%define with_vda          1
%define with_pcre         1

B、创建rpm

[root@localhost SPECS]# rpmbuild -bb postfix.spec
[root@localhost RPMS]# cd $RPMS/i386
[root@localhost i386]# rpm -ivh postfix-2.6.5-1.rhel5.i386.rpm

C、切换mta

[root@localhost i386]# alternatives --config mta (选择2,postfix)
[root@localhost i386]# rpm -e sendmail
[root@localhost i386]# cd /usr/sbin/
[root@localhost sbin]# mv sendmail sendmail.bak
[root@localhost sbin]# newaliases
[root@localhost sbin]# ln -s sendmail.postfix sendmail

D、配置postfix

[root@localhost ~]# cd /etc/postfix/
[root@localhost postfix]# mv main.cf main.cf.bak
[root@localhost postfix]# vim main.cf

输入下面的内容:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 550
debug_peer_level = 2
debugger_command =

          PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

          ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = /usr/share/doc/postfix-2.6.5-documentation/html
manpage_directory = /usr/share/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/postfix-2.6.5-documentation/readme
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
myhostname = mail.360book.com.cn(修改为自己的域名)
mydomain = 360book.com.cn(修改为自己的域名)
mydestination = $myhostname
smtpd_banner = 360book.com.cn ESMTP Mail System(修改为自己的域名)
message_size_limit = 14680064
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /home/domains
virtual_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_transport = maildrop
maildrop_destination_recipient_limit = 1

#sasl
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
smtpd_sasl_security_optiOns= noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictiOns=

       permit_mynetworks,

       permit_sasl_authenticated,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
dspam_destination_recipient_limit = 1
复制extman/docs 目录的cf 文件到/etc/postfix
[root@localhost postfix]# cp /root/extman-1.1/docs/mysql_virtual_* .
因为配置文件的用户、密码与数据库时一样,所以不用修改。
[root@localhost postfix]# service postfix start

9、安装maildrop
A、下载生成RPM

[root@localhost postfix]# cd
[root@localhost ~]# wget http://prdownloads.sourceforge.net/courier/maildrop-2.3.0.tar.bz2
[root@localhost ~]# cp maildrop-2.3.0.tar.bz2 $SOURCE
[root@localhost ~]# tar xjf maildrop-2.3.0.tar.bz2
[root@localhost ~]# cd maildrop-2.3.0
[root@localhost maildrop-2.3.0]# cp maildrop.spec $SPEC
[root@localhost maildrop-2.3.0]# cd $SPEC
编辑maildrop.spec 把下面:
BuildRequires: /usr/include/fam.h gdbm-devel pcre-devel
改为:
BuildRequires: gdbm-devel pcre-devel
把下面:
%configure --with-devel --enable-userdb --enable-maildirquota \
--enable-syslog=1 --enable-trusted-users='root mail daemon postmaster qmaild mmdf' \
--enable-restrict-trusted=0 \
--enable-sendmail=/usr/sbin/sendmail
改为:
%configure --with-devel --enable-userdb --enable-maildirquota \
--enable-syslog=1 --enable-trusted-users='root mail daemon postmaster qmaild mmdf' \
--enable-restrict-trusted=0 --enable-sendmail=/usr/sbin/sendmail \
--enable-authlib
B、创建安装maildrop rpm
[root@localhost SPECS]# yum -y install pcre-devel
[root@localhost SPECS]# rpmbuild -bb maildrop.spec
[root@localhost SPECS]# cd $RPMS/i386
[root@localhost i386]# rpm -ivh maildrop-2.3.0-1.i386.rpm
C、添加虚似用户及创建目录
[root@localhost i386]# cd 在这里提示已经添加了用户 应该是安装postfix的时候创建的用户
[root@localhost ~]# groupadd -g 1000 vgroup
[root@localhost ~]# useradd -g 1000 -u 1000 -s /sbin/nologin -d /dev/null vuser
编辑/etc/postfix/master.cf ,加入下面的内容:
maildrop unix -     n     n     -     -     pipe
flags=DRhu user=vuser argv=/usr/bin/maildrop -d ${user}@${nexthop} ${recipient} ${user} ${extension} ${nexthop}
D、创建邮件存储目录
[root@localhost ~]# mkdir -p /home/domains/extmail.org/postmaster
[root@localhost ~]# maildirmake /home/domains/extmail.org/postmaster/Maildir
[root@localhost ~]# chown -R vuser:vgroup /home/domains/   
E、测试maildrop
[root@localhost ~]# echo "test" | maildrop -V 10 -d postmaster@extmail.com

maildrop: authlib: groupid=1000
maildrop: authlib: userid=1000  

maildrop: authlib:logname=postmaster@extmail.org,
home=/home/domains/extmail.org/postmaster, mail=/home/data/domains/extmail.org/postmaster/Maildir/
maildrop: Changing to /home/data/domains/extmail.org/postmaster
Message start at 0 bytes, envelope sender=postmaster@extmail.org
maildrop: Attempting .mailfilter
maildrop: Delivery complete.
出现上以信息说明authlib,maildrop 工作正常
F、测试pop3
[root@localhost ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user postmaster@extmail.org
+OK Password required.
pass extmail
+OK logged in.
list
+OK POP3 clients that break here, they violate STD53.
1 6
.
retr 1
+OK 6 octets follow.
test
.
quit
+OK Bye-bye.
Connection closed by foreign host.

G、测试postfix
[root@localhost ~]# perl -MMIME::Base64 -e 'print encode_base64("postmaster\@extmail.org");'
cG9zdG1hc3RlckBleHRtYWlsLm9yZw==
[root@localhost ~]# perl -MMIME::Base64 -e 'print encode_base64("extmail");'               
ZXh0bWFpbA==
[root@localhost ~]# service postfix restart (重启一下)
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 yiyou.org ESMTP Mail System
ehlo test.com
250-mail.yiyou.org
250-PIPELINING
250-SIZE 14680064
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
cG9zdG1hc3RlckBleHRtYWlsLm9yZw==
334 UGFzc3dvcmQ6
ZXh0bWFpbA==
这里会验证失败!下面会给出解决方案

A、配置apache
修改/etc/httpd/conf/httpd.conf,将下面的选项改为:
User vuser
Group vgroup
在文件最后输入:Include /etc/httpd/conf.d/extmail.conf

[root@localhost ~]# cd /etc/httpd/conf.d/
[root@localhost conf.d]# vim extmail.conf
输入下面的内容:
Alias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman /var/www/extsuite/extman/html/

SetHandler cgi-script
Options +ExecCGI

# config for ExtMail
Alias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail /var/www/extsuite/extmail/html/

SetHandler cgi-script
Options +ExecCGI

[root@localhost ~]# mkdir /var/www/extsuite
[root@localhost ~]# tar zxf extmail-1.2.tar.gz
[root@localhost ~]# cp -r extmail-1.2 /var/www/extsuite/extmail
[root@localhost ~]# cp -r extman-1.1 /var/www/extsuite/extman
B、配置extmail参数
[root@localhost ~]# cd /var/www/extsuite/extmail/
[root@localhost extmail]# cp webmail.cf.default webmail.cf
修改webmail.cf 下面的选项
SYS_SESS_DIR = /tmp/extmail
SYS_MAILDIR_BASE = /home/domains
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
C、配置extman参数
[root@localhost extmail]# cd /var/www/extsuite/extman/
修改webman.cf 下面的选项:
SYS_MAILDIR_BASE = /home/domains
D、创建session 目录
[root@localhost extman]# mkdir /tmp/{extman,extmail}
[root@localhost extman]# chown vuser:vgroup /tmp/ext*

E、配置后台日志分析工具
[root@localhost addon]# cd /var/www/extsuite/extman/addon/
[root@localhost addon]# cp -r mailgraph_ext /usr/local/
将下面的内容加入/etc/rc.local
/usr/local/mailgraph_ext/mailgraph-init start &
/var/www/extsuite/extman/daemon/cmdserver --daemon &
安装所依懒的软件包
[root@localhost mailgraph_ext]# yum -y install rrdtool perl-rrdtool perl-GD perl-File-Tail perl-Unix-Syslog

F、启动后台进程

[root@localhost mailgraph_ext]# /usr/local/mailgraph_ext/mailgraph-init start
Starting mail statistics grapher: mailgraph_ext

G、访问extmail/extman
打开浏览器,输入http://your_ip_address/extmail 注意:your_ip_address 为你实际的ip
第一个测试用户为:postmaster 密码:extmail 域:extmail

打开浏览器,输入http://your_ip_address/extman
extman root 用户为:root@extmail.org 密码为:extmail*123*
注意:进入系统后要修改密码及找回密码的提示问题、答案。

11.安装dspam clamd
yum install clamd dspam*
进入mysql
create database dspam;
grant all on dspam.* to dspam@localhost identified by 'dspam';
cd /usr/share/dspam/sql/mysql/
修改mysql_objects-4.1.sql   virtual_users.sql,在两个文件前添加 use dspam;
mysql -u dspam -p mysql -u dspam -p crontab -e
0 0 * * * /usr/bin/mysql -u dspam -p'dspam' dspam < /usr/share/dspam/sql/mysql/purge-4.1.sql
0 0 * * * /usr/bin/dspam_logrotate -a 30 -d /var/spool/dspam/data
修改/etc/dspam/dspam.conf
MySQLServer             /var/lib/mysql/mysql.sock
MySQLUser               dspam
MySQLPass               dspam
MySQLDb                 dspam
MySQLCompress           true
MySQLUIDInSignature        on
ClamAVPort                3310   //开启clamd
ClamAVHost                127.0.0.1
ClamAVResponse        spam
ServerPID              /var/run/dspam.pid
ServerMode auto
ServerParameters        "--user dspam --deliver=innocent,spam"
ServerDomainSocketPath "/tmp/dspam.sock"
DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full

vi /etc/postfix/master.cf
smtp      inet         n       -       n       -       -        smtpd
To:
smtp      inet         n       -       n       -       -        smtpd
-o content_filter=lmtp:unix:/tmp/dspam.sock(-o 前面有三个空格)

lmtp      unix -       -       n       -       -       lmtp

127.0.0.1:10026 inet    n    -    n    -    -    smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_helo_restrictiOns=
-o smtpd_sender_restrictiOns=
-o smtpd_recipient_restrictiOns=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o receive_override_optiOns=no_unknown_recipient_checks,no_header_body_checks
配置dspam web 在/usr/share/dspam/webui/cgi-bin
vi admins
添加admin

[root@localhost ~]#htpasswd -c .htpasswd admin
xx
xx
/etc/init.d/dspam-webd start
[root@localhost ~]#chkconfig --level 345 dspamd on
[root@localhost ~]#chmod -R 777 /usr/share/dspam
[root@localhost ~]#service dspamd start
至此,整个postfix算是安装完毕。重启计算机,访问:http://your ip/extmail/就能直接访问了。
解决smtp验证问题

May 9 20:42:49 mail postfix/smtpd[2536]: warning: unknown[ip]: SASL LOGIN authentication failed: authentication failure

现象:
本地extmail能正常登陆并发送邮件出去。通过telnet登陆出现错误:

SASL LOGIN authentication failed: authentication failure

通过foxmail,php的smtp类登陆同样报此错。

分析:

查看验证配置文件:

cat /usr/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket

且 /var/spool/authdaemon/socket 文件存在,权限为

srwxrwxrwx 1 daemon daemon 0 Apr 30 15:44 /var/spool/authdaemon/socket

也正常啊,难道本地的exmail不走验证机制?

/usr/local/sbin/authtest -s login x@xok.la pass

这里的验证通过了。怪怪。。

仔细想了下这次邮局的配置,与以前大不同的是使用了不少RPM,减少编译过程。所以把怀疑对象定在了cyrus-sasl。

发现没有cyrus-sasl,于是

重新启动postfix,再次测试登陆。依然失败。

saslauthd -v
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap

支持的验证机制方法里怎么没有authdaemond。。看来RPM的默认是没有。。

解决:
下载二进制cyrus-sasl包编译。

tar zvfx cyrus-sasl-2.1.22.tar.gz
cd cyrus-sasl-2.1.22
export LDFLAGS="-lpthread"
./configure --with-mysql --enable-anon --enable-plain --enable-login --disable-krb4 --disable-otp --disable-cram --disable-digest --disable-gssapi --with-pam --with-authdaemond

make
make install

rm -rf /usr/lib/sasl
rm -rf /usr/lib/sasl2
ln -s /usr/local/lib/sasl2 /usr/lib/

#为了让postfix能找到sasl,请运行如下命令:

echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

cat > /usr/lib/sasl2/smtpd.conf < pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
EOT


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 有关phpfgetss()函数的文章推荐10篇
    有关phpfgetss()函数的文章推荐10篇:了解如何使用PHP的各种文件函数。查看诸如fopen、fclose和feof之类的基本文件函数;了解诸如fgets、fgetss和f ... [详细]
  • 导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。和那些 ... [详细]
author-avatar
守护雪天_使0062_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有