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

Postfix配置完全版

Postfix配置完全版--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
作者:陈志敏

对配置者的要求:

1.对Llinux有基本的认识,会一些基本的操作,如vi。

2.对mail的一些基本原理要有个基本认识,如知道什么是MTA,知道 DNS和mail的关系。

3.对MYSQL有些基本的认识,最简单的是知道如何备份还原。在此文档中主要提及postfix的配置,和一些基本的维护方法。

配置环境: centos4.3 由于全部软件是源码安装的,我想在一些比较新的linux/unix/bsd上略修改一下目录也可以用。Ccentos4.3只安装了开发工具,系统语言为英文,但是也安装了中文语言包。其他都没有选取。Selinux为disable.

公司内有一DNS服务器,已配置了为mail准备的域名。(注意的是虚拟域也要做啊)

我会把一些功能分开文档来写,先配置一个可用的比较基本的mail系统,然后再其他文档相应的一些附加功能,一是维护方便,二是方便大家有所选择。

相关软件说明:

因为要用postfixadmin来管理postfix的虚拟域和帐号,所以要安装apache了,我们用的postfixadmin是php做的,那php也是一定要的了。帐号用系统帐号不方便也不安全,我们把它存在数据库中,(要是要搞个pureftp也可以这样)推荐用Mysql。

上面的工具准备好了,要到我们的主角上场了,最近比较流行的MTA是postfix , 但是它只是一个smtp server啊,要配置完整的mail还要有个pop3/imap,在这里我选择了dovecot.原因是比较新,更重要的是,它有很多安全配置功能。

很多C/S的协议是没有验证能力的,或者说验证能力很弱。所以我们要找个专业的加强用户验证功能的软件,这个软件就是 Cyrus SASL即简单的认证机制。在网上用LDAP的人也很多,因为公司网络没有其他要用LDAP认证的,所以我没有用这个,以后会出现在补充文档里。不明白这个软件吗?

SASL 密码加密库 认证算法=== > smtp client

下载地址:

Apache 最强的web服务器,不用多说。

官方主页: http://www.apache.org

httpd-2.2.3.tar.gz


Php linux下流行的网页编写语言。、

官方主页: http://www.php.net

php-5.1.6.tar.bz2


Mysql 轻便免费的数据库软件

官方主页: http://www.mysql.org

MySQL-standard-5.0.24a-0.rhel4.src.rpm 因为考虑到兼容性,我选择了这个下载。



PostfixAdmin 一个用php写的用来管理postfix的域和帐号的软件。
官方主页: http://www.postfixadmin.com
postfixadmin-2.1.0.tgz


Dovecot 安全的pop3/imap软件。

官方主页: http://www.dovecot.org

dovecot-1.0.rc7.tar.gz


Cyrus SASL 第三方加强认证功能的软件

官主主页 http://cyrusimap.web.cmu.edu

cyrus-sasl-2.1.22.tar.gz


官方主页:

Postfix 目前主流的MTA

官方主页:http://www.postfix.org

postfix-2.3.3.tar.gz


基本安装
我把所有软件都放在了/root根下面,你可选择放在其他的位置。

[root@mail ~]# ll

total 57332

-rw-r?r? 1 root root 1221 Aug 1 10:23 anaconda-ks.cfg

drwxrwxrwx 18 90488 wheel 4096 Sep 22 10:03 cyrus-sasl-2.1.22

-rw-r?r? 1 root root 1609278 Sep 21 09:29 cyrus-sasl-2.1.22.tar.gz

drwxrwsrwx 4 1000 1000 4096 Sep 22 13:52 dovecot-1.0.rc7

-rw-r?r? 1 root root 1273427 Sep 23 2006 dovecot-1.0.rc7.tar.gz

drwxr-xr-x 12 mysql pegasus 4096 Sep 21 15:39 httpd-2.2.3

-rw-r?r? 1 root root 6342475 Sep 20 14:59 httpd-2.2.3.tar.gz

-rw-r?r? 1 root root 49848 Aug 1 10:23 install.log

-rw-r?r? 1 root root 3368 Aug 1 10:23 install.log.syslog

drwxrwxrwx 38 503 users 4096 Sep 21 15:11 mysql-5.0.24a

-rw-r?r? 1 root root 19993102 Aug 26 17:58 mysql-5.0.24a.tar.gz

-rw-r?r? 1 root root 19826366 Sep 21 09:58 MySQL-standard-5.0.24a-0.rhel4.src.rpm

drwxr-xr-x 18 1002 1002 4096 Sep 22 09:07 php-5.1.6

-rw-r?r? 1 root root 6454408 Sep 20 15:25 php-5.1.6.tar.bz2

drwxr-xr-x 16 1001 wheel 4096 Sep 22 11:43 postfix-2.3.3

-rw-r?r? 1 root root 2777045 Sep 20 15:06 postfix-2.3.3.tar.gz

drwxr-xr-x 9 501 mysql 4096 Jan 7 2005 postfixadmin-2.1.0

-rw-r?r? 1 root root 160525 Sep 21 09:37 postfixadmin-2.1.0.tgz

[root@mail ~]#chkconfig ?level 3 iptables off

为了方便测试我先把iptables关了,以后再来慢慢写规则


————————————?安装apapche——————————————

[root@mail ~]# tar xzvf httpd-2.2.3.tar.gz //解压到当前目录

[root@mail ~]# cd httpd-2.2.3 // 进入安装目录

[root@mail httpd-2.2.3]# mkdir /usr/local/apache //新建安装目录


[root@mail httpd-2.2.3]# ./configure ?prefix=/usr/local/apache \ //指定安装目录

>?enable-rewrite=shared \ //编译rewrite_module模块否则不能正常加载最新的php模块

>?enable-speling=shared //同上

>?enable-module=so //编译模块

[root@mail httpd-2.2.3]# make && make install //编译安装apache

[root@mail httpd-2.2.3]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd //复制启动文件

[root@mail httpd-2.2.3]# /etc/init.d/httpd start //这样就可以启动了,够简单吧

打开你的网页浏览器去测试吧。要是正常的话就可以显示了。

—————————————-end———————————————————-


—————————————mysql——————————————————

[root@mail ~]# rpm -ivh MySQL-standard-5.0.24a-0.rhel4.src.rpm //安装sql源代码

[root@mail ~]# ll /usr/src/redhat/SOURCES/ //哈,原来安装到这了

total 19556

-rw-r?r? 1 root root 19993102 Aug 26 17:58 mysql-5.0.24a.tar.gz

[root@mail ~]# cp /usr/src/redhat/SOURCES/mysql-5.0.24a.tar.gz . //把它复制过来先

[root@mail ~]# tar xzvf mysql-5.0.24a.tar.gz //还是解压

[root@mail ~]# cd mysql-5.0.24a //进入安装目录

[root@mail mysql-5.0.24a]#mkdir /usr/local/mysql //新建安装目录

[root@mail mysql-5.0.24a]# groupadd mysql //添加运行mysql的组

[root@mail mysql-5.0.24a]# useradd -g mysql mysql //添加运行mysql的用户并加入到组

[root@mail mysql-5.0.24a]#./configure ?prefix=/usr/local/mysql //指定安装目录

[root@mail mysql-5.0.24a]#make && make install //编译安装

[root@mail mysql-5.0.24a]# cp support-files/my-medium.cnf /etc/my.cnf //复制配置文件

[root@mail mysql-5.0.24a]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
//复制启动脚本,这样比较方便管理
[root@mail mysql-5.0.24a]# chmod 700 /etc/init.d/mysqld //添加执行权限

[root@mail mysql-5.0.24a]# cd /usr/local/mysql //进入sql安装目录

[root@mail mysql]# bin/mysql_install_db ?user=mysql //初始化mysql

安全设置
[root@mail mysql]# chown -R root . //修改文件所有者.注意对像为/usr/local/mysql目录。

[root@mail mysql]# chown -R mysql var //当前目录下的var目录所有者改为mysql

[root@mail mysql]# chgrp -R mysql . //当前目录下所有目录所有者组改为mysql

最后权限看起来要是这样的

[root@mail mysql]# ll

total 80

drwxr-xr-x 2 root mysql 4096 Sep 21 16:38 bin

drwxr-xr-x 3 root mysql 4096 Sep 21 16:37 include

drwxr-xr-x 2 root mysql 4096 Sep 21 16:37 info

drwxr-xr-x 3 root mysql 4096 Sep 21 16:37 lib

drwxr-xr-x 2 root mysql 4096 Sep 21 16:39 libexec

drwxr-xr-x 3 root mysql 4096 Sep 21 16:38 man

drwxr-xr-x 7 root mysql 4096 Sep 21 16:39 mysql-test

drwxr-xr-x 3 root mysql 4096 Sep 21 16:38 share

drwxr-xr-x 5 root mysql 4096 Sep 21 16:38 sql-bench

drwx—— 5 mysql mysql 4096 Sep 22 14:39 var

测试mysql
[root@mail mysql]# /usr/local/mysql/bin/mysqld_safe ?user=mysql &

要是正常的话会显示mysqld ended

现在可以用/etc/init.d/mysqld start 来启动mysql了。

推荐设置:
因为我们是源码安装,有时安装其他关连软件的时候常提示找不到??文件,

我们可以把mysql的库文件的路径加到系统的sehll中,这样可以大大减少安装软件的错误。方法如下:

[root@mail mysql]# PATH=$PATH:/usr/local/mysql/bin

[root@mail mysql]# export PATH
[root@mail mysql]# echo ”/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf
[root@mail mysql]# ldconfig&


为了方便的用mysqladmin命令来管理mysql我们来做个链接;

[root@mail mysql]#ln -s /usr/local/mysql/bin/mysql /sbin/mysql
[root@mail mysql]#ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
Mysql默认安装的管理员是空口令,这个当然要改了。

[root@mail mysql]#mysqladmin password ’新的mysql口令‘

默认的情况下mysql只能本地登陆不能从网络登陆,为了使用一些windows下的mysql管理工具,我们有必要增加一个管理员来远程连接到mysql;方法如下:

[root@mail mysql-5.0.24a]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 72 to server version: 5.0.24a-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.


mysql>grant all on *.* to remoteadmin@’%’ identified by ‘远程管理员口令‘

mysql>with grant option;

——————————————-php——————————————————-

[root@mail ~]# tar xjvf php-5.1.6.tar.bz2 //解压,注意z换成了j, 因格式不同

[root@mail ~]# cd php-5.1.6 //进入安装目录

[root@mail php-5.1.6]#mkdir /usr/local/php //新建安装目录

[root@mail php-5.1.6]# ./configure ?prefix=/usr/local/php \

> ?with-mysql=/usr/local/mysql/ \

>?with-apxs2=/usr/local/apache/bin/apxs

[root@mail php-5.1.6]#make && make install

[root@mail php-5.1.6]# cp php.ini-dist /usr/local/lib/php.ini //复制php配置文件

[root@mail php-5.1.6]# cat /usr/local/apache/conf/httpd.conf | grep libphp5.so //是否加载模块

LoadModule php5_module modules/libphp5.so

要是有结果返回的话,我们的php模块就已加载了。要是没有的话请用下面的命令加载。

[root@mail php-5.1.6]# echo “LoadModule php5_module modules/libphp5.so” >> /usr/local/apache/conf/httpd.conf

[root@mail php-5.1.6]#vi /usr/local/apache/conf/httpd.conf

在317行左右加入这两行,让apache支持php

AddType application/x-httpd-php .php .phtml

AddType application/x-httpd-php-source .phps

保存退出就行了。

至此,php配置完毕!下面我们来配置postfixadmin。

——————————————————?end———————————————————-


—————————————?postfixadmin————————————————————-

[root@mail ~]# mkdir /var/www //建立postfixadmin存放目录

[root@mail ~]#cd /var/www

[root@mail www]# tar xzvf /root/postfixadmin-2.1.0.tgz //解压到当前目录

[root@mail www]# ln -s postfixadmin-2.1.0/ postfixadmin //做个连接

[root@mail www]# chown -R daemon:daemon postfixadmin-2.1.0/ //修改所有者为httpd用户

[root@mail www]#cd postfixadmin

[root@mail postfixadmin]#chmod 640 admin/*.php //设置权限增加安全性

[root@mail postfixadmin]#chmod 640 images / *.png

[root@mail postfixadmin]#chmod 640 languages/*.lang

[root@mail postfixadmin]#chmod 640 templates/*.tpl

[root@mail postfixadmin]#chmod 640 users/ *.php

[root@mail postfixadmin]#mysql -u root ?p123456 DATABASE_MYSQL.TXT //导入数据库当然了,实际中我的sql的密码不可能是123456而是标准的强密码。

[root@mail postfixadmin]#cp config.inc.php.sample config.inc.php //复制配置文件

[root@mail postfixadmin]#vi config.inc.php

找这行$CONF[’default_language’] = ‘en’;

改为$CONF[’default_language’] = ‘cn’; //让postfixadmin 支持中文

找到 $CONF[’domain_in_mailbox’] = ‘YES’;

改为$CONF[’domain_in_mailbox’] = ‘NO’; // If you don’t want to have the domain in your mailbox set this to ‘NO’.

[root@mail postfixadmin]# mv motd-admin.txt motd-admin.txt.move //删除烦人的提示,当然喽,你也可以自已写一些说明性的文字!

[root@mail postfixadmin]#vi /usr/local/apache/conf/httpd.conf

在110行左右加入以下内容,加强安全性,要不每个人不经认证都可以用postfixadmn了!


Options FollowSymLinks

DirectoryIndex index.php

AllowOverride None
AuthType Basic
authname Private
authuserfile /var/phpaccess/tony
require valid-user
Order allow,deny

Allow from all


注意tony是我的密码档文件名。

[root@mail postfixadmin]#mkdir /var/phpaccess

ouch /var/phpaccess/tony

[root@mail postfixadmin]#cd /var/phpaccess/

[root@mail phpaccess]# /usr/local/apache/bin/htpasswd -c tony jim //添加用户jim

New password:

Re-type new password:

Adding password for user tony

[root@mail phpaccess]#

然后我们就可以打开网页浏览器来访问了

Http://youip/postfixadmn/admin

至此postfixadmin配置完毕。在这里我推荐对mysql比较了解的人更改默认的postfix连接密码!默认数据名为postfix,用户名密码都是postfix!!!!

——————————————-end———————————————————

关于解压不在重复


————————————-cyrus-sasl-2.1.22———————————————-

[root@mail cyrus-sasl-2.1.22]# rpm -qa | grep cyr //查看是否安装了cyrus

cyrus-sasl-2.1.19-5.EL4

cyrus-sasl-devel-2.1.19-5.EL4

cyrus-sasl-md5-2.1.19-5.EL4

cyrus-sasl-plain-2.1.19-5.EL4

[root@mail cyrus-sasl-2.1.22]# mv /usr/lib/sasl /usr/lib/sasl.off

[root@mail cyrus-sasl-2.1.22]# mv /usr/lib/sasl2 /usr/lib/sasl2.off

[root@mailcyrus-sasl-2.1.22]#./config ?enable-login ?enable-sql ?with-mysql=/usr/local/mysql/

[root@mailcyrus-sasl-2.1.22]#make && make install

安装后提示

********************************************************

* WARNING:

* Plugins are being installed into /usr/local/lib/sasl2,

* but the library will look for them in /usr/lib/sasl2.

* You need to make sure that the plugins will eventually

* be in /usr/lib/sasl2

所以要做个ln。

ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

为了让postfix找到sasl

[root@mail cyrus-sasl-2.1.22]# echo “/usr/local/lib” >> /etc/ld.so.conf

至此安装完毕

—————————————————-end————————————————————?


——————————————postfix——————————————————————?


删除原来的sendmail

[root@mail postfix-2.3.3]# /etc/init.d/sendmail stop

[root@mail postfix-2.3.3]# chkconfig ?level 0123456 sendmail off

[root@mail postfix-2.3.3]# mv /usr/bin/newaliases /usr/bin/newaliases.orig

[root@mail postfix-2.3.3]# mv /usr/bin/mailq /usr/bin/mailq.orig

[root@mail postfix-2.3.3]# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig

[root@mail postfix-2.3.3]#chkconfig ?level 3 sendmail off

要开始安装我们的postfix了

[root@mail postfix-2.3.3]# groupadd -g 12345 postfix

[root@mail postfix-2.3.3]# useradd -u 12345 -g 12345 -c postfix -d /dev/null -s /bin/false postfix

[root@mail postfix-2.3.3]# groupadd -g 54321 postdrop

验证postfix用户的uid和gid

[root@mail postfix-2.3.3]# id postfix

uid=12345(postfix) gid=12345(postfix) groups=12345(postfix)

准备加入mysql和sasl的支持(注意rpm安装的postfix默认是不支持mysql的)

[root@mail postfix-2.3.3]# make -f Makefile.init makefiles \

>CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl’ \

>’AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2′

[root@mail postfix-2.3.3]#make install //安装mysql,然后有提示的时候一路确定即可

如果/etc/aliases文件不存在,请用如下命令创建:
[root@mail postfix-2.3.3]# echo postfix: root >>/etc/aliases
[root@mail postfix-2.3.3]# /usr/bin/newaliases
然后我们可以用postfix start 来启动postfix了,用postfix reload 来得新加载配置文件;


—————————————————-end————————————————————?



——————————————————postfix配置————————————————-
[root@mail postfix-2.3.3]# cd /etc/postfix
[root@mail postfix]# vi main.cf //你可以先备份一下配置文件
先修改一些基本的参数
myhostname = mail //修改为你的主机名,重要!
mydomain = mail.com //你域名,注意这里非虚拟域的域名,我的虚拟域名为mail2.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
以上基本的配置,你可以在配置文件中任意处加入,也可以简单的去掉原来的#号,然后根据自己的情况来修改之,接下来我来配置postfix来支持虚拟域。


virtual_mailbox_base = /var/mailbox //虚拟用户邮件存放目录,这个一会再新建
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:12345 //注意这就是我们postfix用户的uid
virtual_gid_maps = static:12345
virtual_transport = virtual


#——————quota—?
message_size_limit = 14336000 //附件最大10M,大约是这样
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 user’s maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes


#SASL这个下一个文档再来配置
保存退出,然后就来建几个文件,用来让postfix知道如何连到mysql查询虚拟用户信息
[root@mail postfix]# mkdir mysql
[root@mail postfix]#cd mysql
[root@mail mysql]#vi mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address=’%s’ AND active = 1
[root@mail mysql]#vi mysql_virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain=’%s’
[root@mail mysql]#vi mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username=’%s’ AND active = 1
[root@mail mysql]#vi mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username=’%s’
[root@mail mysql]# mkdir /var/mailbox/ //建立我们虚拟用户的邮箱目录
[root@mail mysql]#chown -R postfix.postfix /var/mailbox/
下面我们来配置smtpd.conf,因为想应用sasl就要配置这个文件,否则postfix将不能应用sasl!!
[root@mail postfix]# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username=’%u@%r’ and domain=’%r’ and active=’1′
记得保存退出
现在我们可以用postfix start来启动我们的postfix了
测度postfix
[root@mail postfix]# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 mail ESMTP Postfix
用ctrl+c退出好了。
——————————————————-end———————————————————-


——————————————dovecot—————————————————————?
[root@mail dovecot-1.0.rc7]# ./configure ?with-mysql //加入sql的支持
[root@mail dovecot-1.0.rc7]# useradd -d /dev/null -s /bin/false dovecot //添加运行用户
[root@mail dovecot-1.0.rc7]#make && make install
安装就是这么简单,下面来复制配置所要的配置文件
[root@mail dovecot-1.0.rc7]# cp dovecot-example.conf /usr/local/etc/dovecot.conf
[root@mail dovecot-1.0.rc7]# cp doc/dovecot-sql.conf /usr/local/etc/
[root@mail dovecot-1.0.rc7]# cd /usr/local/etc/
[root@mail etc]#vi dovecot.conf //注意我的习惯是在配置文件里找到配置,然后去掉#号,读英文说明,再根据实际情况修改,但很多人很NB,就直接写一个,呵,我不行。
因为公司不用imap所以在这里我没有用,但会在后面的文档加入这个;大家可以在配置文件里找到相应的行,然后再修改。我的改动如下:
protocols = pop3
listen = *
disable_plaintext_auth = no
ssl_disable = yes


default_mail_env = maildir:/var/mailbox/%d/%n
first_valid_uid = 12345
pop3_uidl_format =%v.%u
mechanisms = plain login digest-md5 cram-md5
passdb sql {
# Path for SQL configuration file, see doc/dovecot-sql.conf for example
args =/usr/local/etc/dovecot-sql.conf
}
userdb sql {
# Path for SQL configuration file, see doc/dovecot-sql.conf for example
args =/usr/local/etc/dovecot-sql.conf
}
userdb prefetch {
}
最后我们配置一下dovecot-sql.conf
[root@mail etc]# vi dovecot-sql.conf
driver =mysql
cOnnect= host=localhost dbname=postfix user=postfix password=postfix
default_pass_scheme = CRYPT
password_query = SELECT password, maildir as userdb_home, 12345 as userdb_uid, 12345 as userdb_gid FROM mailbox WHERE userna
me = ‘%u’
以后的配置都可以在配置文件里找到,我们只要去掉#号略修改一下就可以了。配置对mysql的支持,这里很重要,要是这里出错了dovecot将不能正常启动;
现在你可以用dovecot来启动dovecot了.要注意的是,dovecto每当修改了配置文件后要重新启动的话,你只能用ps ?aux | grep dovedot找到进程ID再kill之。
测试:我们用postfixadmin来新建域mail2.com;并添加一测试用户google密码为123
在这里有个要特别要注意的地方,在客户端outlook设置的时候,帐号名为google@mail2.com
而不是google!!!!
[root@mail etc]# telnet localhost 110
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
+OK Dovecot ready.
user google@mail2.com
+OK
pass 123
+OK Logged in.
list
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.
[root@mail etc]#
end

至此全部配置完毕,启动所有服务,httpd,mysqld,postfix,dovecot,就OK了。
推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
author-avatar
神秘的霸气沉默_168
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有