linux-engineer-管理员技术-02:邮件服务器,数据库服务基础

两台虚拟机,均修改防火墙与主机名

虚拟机server0:

# firewall-cmd --set-default-zone=trusted                                #将防火墙默认区域改为trusted

# echo server0.example.com  >  /etc/hostname              #将主机名改为server0.example.com

# cat /etc/hostname

虚拟机desktop0:

# firewall-cmd --set-default-zone=trusted

# echo desktop0.example.com  >  /etc/hostname

# cat /etc/hostname

电子邮件服务器的基本功能

– 为用户提供电子邮箱存储空间(用户名@邮件域名)

– 处理用户发出的邮件 —— 传递给收件服务器

– 处理用户收到的邮件 —— 投递到邮箱

用户发邮件的协议:  SMTP  端口25

用户收邮件的协议:  pop3  端口110    IMAP 端口143

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

虚拟机server0

搭建基本邮件服务器

1. 安装postfix服务端程序

[[email protected] ~]# rpm -q postfix

postfix-2.10.1-6.el7.x86_64                                           #检测软件已安装

若没安装则yum -y install postfix安装,重启服务,设置开机自起

2.配置postfix服务,修改配置文件

特别注意:进入vim配置一定要去掉前面的注释#!!!

[[email protected] ~]# vim /etc/postfix/main.cf

76行   myhostname = server0.example.com        #指定主机名

83行   mydomain = example.com                        #指定后缀域名

这两行可以不用配置

99行   myorigin = server0.example.com           #默认补全的邮件后缀

116行 inet_interfaces = all                               #允许所有客户端

164行 mydestination = server0.example.com

#判断邮件后缀为本域邮件

补充:vim  命令模式      u 撤销

dd 删除当前行

有相同行反应命令,后面的会覆盖前面的,不会执行前面的,例如113行和116行,会执行116行的

3.重起postfix服务,设置为开机自起

# systemctl restart postfix             #重启服务

# systemctl enable  postfix            #开机自启

4. 测试邮件的收发

[[email protected] ~]# useradd yg                             #添加发件人yg

[[email protected] ~]# echo 123 | passwd --stdin yg           #更改用户yg的密码为123

[[email protected] ~]# useradd xln                           #添加收件人xln

[[email protected] ~]# echo 123 | passwd --stdin xln         #更改用户xln的密码为123

mail 发信操作

– mail -s ‘邮件标题‘ (可以中英文)  -r 发件人    收件人

邮件标题可以中英文

mail 收信操作

– mail [-u 收件人用户名]

[[email protected] ~]# mail -s ‘test01‘ -r yg   xln    #yg给xln发送标题为test01的邮件,下面直接输入内容

一行行首中只有一个  “.”    的时候,代表结束

[[email protected] ~]# mail -u xln                       #xln收信

输入 邮件编号 1 查看邮件内容

quit或者q退出

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

nullclient(空客户端)邮件服务

nullclient,空客户端  充当秘书

作用:

– 不提供任何邮箱账号,因此不需要投递邮件

– 但是可以为用户代发邮件

一、配置desktop0为邮件服务器

1.配置postfix服务,修改配置文件

[[email protected] ~]# vim /etc/postfix/main.cf

99行    myorigin = desktop0.example.com

116行  inet_interfaces = all

164行  mydestination = desktop0.example.com

[[email protected] ~]# systemctl restart postfix

[[email protected] ~]# systemctl enable postfix

二、配置server0为空客户端邮件服务器

[[email protected] ~]# vim /etc/postfix/main.cf

99行     myorigin = desktop0.example.com

116行   inet_interfaces = localhost                #只允许本机

164行   mydestination =                                #将投递域设为空

317行   relayhost = [172.25.0.10]                    #指定交给邮件服务器desktop0的IP地址

[[email protected] ~]# systemctl restart postfix

三、测试

虚拟机server0上

# echo   abc   |   mail -s Test1 -r  yg   student

虚拟机desktop0上

# mail -u student

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

数据库服务基础

常见的关系型 数据库管理系统

– 微软的 SQL Server

– IBM的 DB2

– 甲骨文的 Oracle、MySQL(现被Oracle收购)

– 社区开源版 MariaDB

MySQL和MariaDB只是名字不同,其他所有一模一样

RHEL7 中的 MariaDB 相关包

– mariadb-server:提供服务端有关的系统程序

端口号 : 3306

注意:以后如果要为服务添加端口,最好选择1024以上的,因为1024以下的大部分都是被添加了的。

一、部署mariadb数据库

1.安装mariadb-server数据库软件

[[email protected] ~]# yum -y install mariadb-server

2.启动mariadb服务

[[email protected] ~]# systemctl restart mariadb   #重启服务,要等待一段时间,不要ctrl+c退出!

[[email protected] ~]# systemctl enable mariadb     #设置开机自启

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

数据库 跟 系统命令操作是两个完全不同的操作

数据库是用表格形式表示的,表字段表示列,表记录表示行!

[[email protected] ~]# mysql            #进入数据库

MariaDB [(none)]> show databases;           #查看数据库

MariaDB [(none)]> create database nsd1709;  #创建数据库nsd1709

MariaDB [(none)]> show databases;

MariaDB [(none)]> drop database nsd1709;    #删除数据库nsd1709

MariaDB [(none)]> show databases;

MariaDB [(none)]> create database nsd;

MariaDB [(none)]> show databases;

MariaDB [(none)]> quit 或者exit                    #退出数据库

退出出错则直接按;退出

MariaDB [(none)]> q

-> ;

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

数据库管理员为root,但与系统用户root没有关系,两个概念不同

为数据库账号修改密码     退出到系统修改

– mysqladmin [-u用户名] [-p[旧密码]] password ‘新密码‘

[[email protected] ~]# mysqladmin -u  root   password  ‘123‘               #设置密码为123

[[email protected] ~]# mysql                #进不去,提示要输入密码

ERROR 1045 (28000): Access denied for user        ‘root‘@‘localhost‘ (using password: NO)

[[email protected] ~]# mysql  -u  root  -p          #登录密码123以密文形式不显示

Enter password:

[[email protected] ~]# mysql -u root -p123     #免交互登陆,为了安全最好用上面的操作,加密输入

禁止监听,只服务于本机

[[email protected] ~]# vim /etc/my.cnf          #数据库主配置文件

[mysqld]

skip-networking                                  #跳过网络监听

......

[[email protected] ~]# systemctl restart mariadb     #重启服务

MariaDB [(none)]> 交互指令

– 列出数据库:show databases;

– 使用/选择数据库:use 数据库名;               #不能回退,直接use切换想要去的库

– 列出库里有哪些表:show tables;           #要进入库中才能列出

– 创建数据库:create database 数据库名;

– 删除数据库:drop database 数据库名;

在没有导入文件到数据库之前,添加的库都为空

导入/恢复到数据库            http://172.25.254.254/pub/materials/users.sql

– mysql [-u用户名] [-p[密码]] 数据库名  <  备份文件.sql

退出到系统用户导入

# wget http://172.25.254.254/pub/materials/users.sql

# mysql -u root -p123 nsd < users.sql                #将备份文件导入到nsd

# mysql -u root -p123

MariaDB [nsd]> use nsd;          #进入nsd库

MariaDB [nsd]> show tables;      #查看都有那些表格

+---------------+

| Tables_in_nsd |

+---------------+                                     #有两个库base和location

| base          |

| location      |

+---------------+

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

查询操作 select

# mysql -u root -p123

MariaDB [nsd]> use nsd;

MariaDB [nsd]> select * from base;           #从base库中查询信息

+------+---------+------------+

| id   | name    | password   |

+------+---------+------------+

|    1 | Tom     | 123        |

|    2 | Barbara | 456        |

|    3 | James   | solicitous |

|    4 | Smith   | tarena     |

|    5 | Barbara | pwd123     |

+------+---------+------------+

MariaDB [nsd]> select * from location;         #从location库中查询信息

+------+-----------+

| id   | city      |

+------+-----------+

|    1 | Beijing   |

|    2 | Paris     |

|    3 | Sunnyvale |

|    4 | Berlin    |

|    5 | Sunnyvale |

+------+-----------+

#base和location两个表的id表示同一id,比如base中的id 1的tom是住在location的id 1的beijing

MariaDB [nsd]> select id,name from base;   #指定查询base的id和name

+------+---------+

| id   | name    |

+------+---------+

|    1 | Tom     |

|    2 | Barbara |

|    3 | James   |

|    4 | Smith   |

|    5 | Barbara |

+------+---------+

MariaDB [nsd]> select * from base where name=‘tom‘;    #查询指定tom的所有base中的数据信息

+------+------+----------+

| id   | name | password |

+------+------+----------+

|    1 | Tom  | 123      |

+------+------+----------+

MariaDB [nsd]> select * from location where city=‘beijing‘;        #查询指定beijing地区的所有location中的数据信息

+------+---------+

| id   | city    |

+------+---------+

|    1 | Beijing |

+------+---------+

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

数据库授权

授权(grant)给某一用户“增insert、查select、删delete、改update”权限

insert:插入表记录

select:查询表记录

delete:删除表记录

update:修改表记录

MariaDB [(none)]> 交互指令

– grant 权限列表 (增/查/删/改) on  数据库名.表名   to  用户名@localhost  identified by ‘密码‘;

当kobe用户从本地localhost登陆,输入密码123,将会获得库nsd所有表的查询权限

# mysql -u root -p123

MariaDB [(none)]> grant select on nsd.* to [email protected] identified by ‘123‘;

查看MariaDB数据库中,用户表信息

MariaDB [mysql]> select user,password from mysql.user;        #查询mysql库中用户表的用户名和密码信息

+------+-------------------------------------------+

| user | password                                  |

+------+-------------------------------------------+

| root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

| root |                                           |

| root |                                           |

| root |                                           |

|      |                                           |

|      |                                           |

| kobe | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

+------+-------------------------------------------+

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

案例5:使用数据库查询

. 在系统 server0 上使用数据库 nsd,并使用相应的 SQL 查询以回答下列问题:

SQL:结构化查询语言

1) 密码是 solicitous 的人的名字?

> select * from nsd.base where password=‘solicitous‘;             #查询密码是 solicitous 的所有信息(ID、name)

+------+-------+------------+

| id   | name  | password   |

+------+-------+------------+

|    3 | James | solicitous |

+------+-------+------------+

> select * from nsd.base where password=‘solicitous‘ and  id=‘3‘;        #密码和id同时满足要求

+------+-------+------------+

| id   | name  | password   |

+------+-------+------------+

|    3 | James | solicitous |

+------+-------+------------+

> select * from nsd.base where name=‘Barbara‘ or  id=‘3‘;       #查询名字是Barbara或者id是3的数据信息;

+------+---------+------------+

| id   | name    | password   |

+------+---------+------------+

|    2 | Barbara | 456        |

|    3 | James   | solicitous |

|    5 | Barbara | pwd123     |

+------+---------+------------+

2) 有多少人的姓名是 Barbara 同时居住在 Sunnyvale?

> use nsd;

> select * from base,location

where base.name=‘Barbara‘ and location.city=‘Sunnyvale‘   and  base.id=location.id;

> select count(*) from base,location

where base.name=‘Barbara‘ and location.city=‘Sunnyvale‘ and  base.id=location.id;

> insert base values(6,‘Barbara‘,123456);                  #插入表记录(id,name,password)

> insert location values(6,‘Sunnyvale‘);                     #插入表记录(id,city)

> select * from base;

+------+---------+------------+

| id   | name    | password   |

+------+---------+------------+

|    1 | Tom     | 123        |

|    2 | Barbara | 456        |

|    3 | James   | solicitous |

|    4 | Smith   | tarena     |

|    5 | Barbara | pwd123     |

|    6 | Barbara | 123456     |

+------+---------+------------+

> select * from location;

+------+-----------+

| id   | city      |

+------+-----------+

|    1 | Beijing   |

|    2 | Paris     |

|    3 | Sunnyvale |

|    4 | Berlin    |

|    5 | Sunnyvale |

|    6 | Sunnyvale |

+------+-----------+

. 禁止空密码root用户访问 mariadb 数据库

> use mysql;

> select user,host,password from user where password=‘‘ and user=‘root‘;                 #空密码直接两个单引号‘’

+------+---------------------+----------+

| user | host                | password |

+------+---------------------+----------+

| root | server0.example.com |          |

| root | 127.0.0.1           |          |

| root | ::1                 |          |

+------+---------------------+----------+

> delete from user where password=‘‘ and user=‘root‘;                                    #删除空密码root用户

> select user,host,password from user ;

+------+---------------------+-------------------------------------------+

| user | host                | password                                  |

+------+---------------------+-------------------------------------------+

| root | localhost           | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

|      | localhost           |                                           |

|      | server0.example.com |                                           |

| kobe | localhost           | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

+------+---------------------+-------------------------------------------+

> desc  user;       #查看表结构

时间: 2024-10-10 10:08:17

linux-engineer-管理员技术-02:邮件服务器,数据库服务基础的相关文章

Linux 小知识翻译 - 「邮件服务器」

这次聊聊「邮件服务器」. 邮件服务器上通常会运行2个服务端软件,「SMTP服务器」和「POP服务器或者IMAP服务器」. 这2个东西,也许使用邮件客户端的人立马就明白了.因为设置邮件客户端的时候,需要指定「发信服务器」和「收信服务器」. 这2个服务器是同一个的情况虽然也不少,但是一般指定「发信服务器」或者「收信服务器」的时候,都是指「发送邮件的服务端软件」和「接收邮件的服务端软件」. 发送邮件时,发送邮件的路线简单表示如下: 即,发邮件的客户端使用SMTP(Simple Mail Transfe

[转文]linux搭建最简单的邮件服务器

一.首先应该先了解用户和邮件服务器以及邮箱的使用 现在通常使用Email都很容易,这是因为有第三方服务商搭建邮件服务器,用户只需注册然后使用邮箱的收发功能. 但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理.MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Post

Postfix邮件服务器(基础)

邮件服务器 电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序.电子邮箱等.为用户提供基于E-mail服务的电子邮件系统,人们通过访问服务器实现邮件的交换. 常见的邮件服务器 类型 名称 特点 服务器端 Sendmail 资格最古老,运行稳定,但安全性欠佳 Postfix 采用模块化设计,在投递效率.稳定性.性能及安全性方面表现优秀,与sendmail保持足够的兼容性. Qmail 采用模块化设计,速度快.执行效率高,配置稍微复杂点 客户端 Outlook oe foxmail 邮

linux+postfix+extmail+dovecot搭建邮件服务器

一.我们可以重新搭建服务器,也可以利用我前面的搭建方法编译安装,地址: http://wangzan18.blog.51cto.com/8021085/1605480,本次我们使用yum的方法来安装httpd和mysql,我的搭建环境还是我们的CentOS6.6 x86-64位mini版,其中可以有许多依赖软件包是没有安装的,搭建视情况而定:如果搭建使用我上述源码编译的httpd,记得开启cgi模块: 1.现在我们安装httpd.mysql # yum install httpd mysql-s

exchange系列(四)如何保护exchange邮件服务器的安全

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持 理论部分: 邮件病毒的危害 窃取邮件内容 破坏邮件 垃圾邮件的危害 占用邮箱空间 传播不好的内容 查找正常的邮件速度缓慢,降低工作效率 安装防病毒软件 Froefrontprotection fro exchange server 这个防病毒软件,主要的工作是防病毒,也可以用来防范垃圾邮件 fpf的安装要求 安装有exchange 2010

邮件服务器Postfix的管理 重启php-fpm

Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPFhttp://www.freehao123.com/postfix-cyrus/CentOS下安装postfix发送邮件教程http://www.wpmee.com/lnmp1-0-centos-postfix/ CentOS下安装Postfix替换Sendmail发送邮件http://www.linuxidc.com/Linux/2014-10/107947.htm今天有网友提醒

[转]作者:朱 茂海 CentOS安装iRedMail web邮件服务器

中文名为“艾瑞得邮件”,由 rhms 项目 更名而来.是针对 Red Hat(R) Enterprise Linux 和 CentOS 设计的邮件服务器解决方案,是在操作系统安装好后使用的一套 shell 脚本,用于快速部署一套功能完善的邮件服务器解决方案.iredmail谷歌开源地址:http://code.google.com/p/iredmail/ iredmail系统要求 iredmail安装需要干净的系统环境,意思是服务器不存在与iredmail相关的组件,如apache,mysql,

Linux运维高级篇—CentOS 7下Postfix邮件服务器搭建

第一章 实验环境 硬件环境:Linux服务器一台,IP地址:192.168.80.10:WIN7客户端一台,拥有OUTLOOK2013,测试用,与服务器在同一局域网内. Linux系统环境,如下图: 第二章 实验内容一:搭建DNS服务器二:搭建postfix服务器及普通发信三:普通收信四:认证收信五:squirrelmail收发邮件(搭建网页收发邮件)六:邮件群发功能配置七:邮件发送容量大小配置八:通过配置用户磁盘配额实现限制用户邮箱空间 第三章 实验步骤准备工作:[[email protect

Linux邮件服务器架构

// 上面的过程只是实现了简单的本地用户的文件发送功能,只需要安装mailutil,不需要安装配置sendmail,看鸟哥的Linux私房菜中写的应该是本地用户发送邮件不需要sendmail.只有当非本地用户使用该MTA发送邮件时才需要使用sendmail.邮件服务器的架构技术很实用,相信以后用途也很大.本博客将持续更新  Linux邮件服务器架构 的学习过程. Linux邮件服务器架构,布布扣,bubuko.com