zoukankan      html  css  js  c++  java
  • <邮件服务postfix+mysql>MAIL第二篇

    环境:本服务是建立在第一篇的基础之上的,最好搭建好第一篇

    玩此服务的前提是你的系统装好了msql和postfix服务。

    Postfix+mysql主要是把邮件服务的发与mysql结合使用。当然mysql要是一直是在命令行下使用也不是很方便对吧,下面我们来看linux图形化下mysql的使用:

    下面的软件包。

    phpMyAdmin-2.11.3-all-languages.tar.gz是以php的格式结合Apache通过网页的形式管理mysql

    既然是使用网页管理mysql,当然很定得将这个软件包的目录放到apahce下面,对吧

    我直接将软件包下载到/var/www/html下面。自行解压

    首先解压这个软件包,这个软件包的名字好长,我们可以改个短点的名字。

    # mv phpMyAdmin-2.11.3-all-languages phpmyadmin

    切换到这个目录

    然后我们查看安装步骤:

    [root@rhce phpmyadmin]# vim INSTALL

     

    phpMyAdmin - Installation

    -------------------------

    安装文件提示让我们去看这2个文件。

            Please have a look to the Documentation.txt or

            Documentation.html files.

    我们打开Documentation.txt文件。

    Vim Documentation.txt

    找到快速安装Quick Install

    第四步:4. Now you must configure your installation. There are two methods that can be

        used. Traditionally, users have hand-edited a copy of config.inc.php, but

        now a wizard-style setup script is provided for those who prefer a

        graphical installation. Creating a config.inc.php file is still a quick way

    to get started and needed for some advanced features.英文下面还有这个文件要写入那些东西

    这段话的意思:有2中方法:可以使用现有的文件拷贝一个config.inc.php。或是自己创建一个config.inc.php,要是自己创建,下面有你要在文件中写入的内容:

     

    我们拷贝一个:

    # cp config.sample.inc.php config.inc.php

    然后修改参照第四步,我们虽然是拷贝,但只是模板,内容也要和它提示我们自己创建的一样。

    我们打开config.inc.php文件,默认红色部分是空的,我们去快速安装第四部复制下面的代码粘贴到这。

    $cfg['blowfish_secret'] = 'ba17c1ec07d65003'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

    Apache服务有了,我们还需要安装php软件包:

    # yum install php php-mysql –y   //安装php一个是不够的还有php-mysql

    重启mysqlhttpd服务:

    之后在浏览器中输入:服务的ip/phpmyadmin 回车就ok了。

     

    之后你会看到下面的界面,可以选择中文。登陆你的mysql数据库。

    之后我创建一个westos库和一个date表。库和表名字可以随便,没必要非得照我写的

    这个表的结构是由四部分构成:

    然后我们在服务添加一个伪用户,就是不可以登陆系统的用户。

    # useradd -u 700 -s /sbin/nologin vmail    

    前面我们登陆数据库使用的是root,它的权限过大,一般只限root登陆本地数据库,我们重新给mysql指定一个email用户对westos库下的所有表有全部的权限。

    >grant all on westos.* to email@'%' identified by 'email';

    退出重新登录:使用email身份:可以看到它的有效库也只有westos

    在表里插入:

    把这几条写入postfix的配置文件main.cf。执行下面的命令就会写入main.cf

    [root@redhat ~]# postconf -d | grep virtual

    [root@redhat ~]# postconf -e "virtual_mailbox_base = /home/vmail"

    [root@redhat ~]# postconf -e "virtual_uid_maps = static:700"

    [root@redhat ~]# postconf -e "virtual_gid_maps = static:700"

    邮箱的基本配置路径是/home/vmail

    发送邮件所使用的虚拟用户uid=700 gid=700

    下面我们要配置mysql的文件,使postfix读取文件时,会自动的去读取mysql的数据。

    模板的路径:

    /usr/share/doc/postfix-2.6.6/README_FILES/ MYSQL_README

    Cd /etc/postfix   mysql的用户配置文件

    vim users.cf

    host = localhost

    user = email

    password = email

    dbname = westos

    select_field = username          “选择一个领域

    table = date

    where_field = username

     

           为了防止我们书写错误,可以使用命令进行校验:

     

    #postmap -q "test@test.com" mysql:/etc/postfix/users.cf

    test@test.com  //校验正确会出现相应的内容

     只有用户是不够的,我们发邮件还有域、邮箱等

    [root@redhat postfix]# cp -p users.cf domain.cf  

    [root@redhat postfix]# cp -p users.cf mailbox.cf

     

    vim domain.cf

     

    host = localhost

    user = email

    password = email

    dbname = westos

    select_field = domain

    table = date

    where_field = domain

     

    vim mailbox.cf

     

    host = localhost

    user = email

    password = email

    dbname = westos

    select_field = maildir

    table = date

    where_field = username    

     

    校验上面文件书写的是否正确

    [root@redhat postfix]# postmap -q "test.com" mysql:/etc/postfix/domain.cf

    test.com

    [root@redhatpostfix]#postmap-q"test@test.com"mysql:/etc/postfix/mailbox.cf

    test.com/test/

     

    再将这几天添加到postfix的主配置文件中:

    [root@redhat ~]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/domain.cf"

    [root@redhat ~]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"

    [root@redhat ~]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/users.cf"

     

    要是你的selinux是打开的就要做下面的:

     

    [root@redhat ~]# getsebool -a | grep mysql

    allow_user_mysql_connect --> off

    mysql_connect_any --> off

    [root@redhat ~]# setsebool -P allow_user_mysql_connect on

     

    下面所有做的就是:

    切换到/var/lib/mysql

    rm -rf mysql.sock  //这个文件会记录你mysql之前的操作,我试过不删它重启服务,你测试时邮件依旧收不到

    重启mysql服务

    Mysql有两种连接方式:

    1TCP/IP

    2socket

    mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用

    例如你无须定义连接host的具体IP得,只要为空或localhost就可以。

    在此种情况下,即使你改变mysql的外部port也是一样可能正常连接。

    因为你在my.ini中或my.cnf中改变端口后,mysql.sock是随每一次 mysql server启动生成的。已经根据你在更改完my.cnf后重启mysql时重新生成了一次,信息已跟着变更

    进行测试:

    [root@redhat vmail]# mail test@test.com

    Subject: nihao

    dabendan

    .

    EOT

    [root@redhat vmail]# mailq

    Mail queue is empty

    [root@redhat vmail]# ls

     test.com

  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/linux-super-meng/p/3783600.html
Copyright © 2011-2022 走看看