1. 程式人生 > >Day08 電子郵件基礎&數據庫基礎(Enginner02)

Day08 電子郵件基礎&數據庫基礎(Enginner02)

連接 new 跳過 roo 報警郵件 username pwd 不支持 ner

一、電子郵件基礎

1.1 電子郵件服務器的基本功能

為用戶提供電子郵箱存儲空間
處理用戶發出的郵件—傳遞給收件服務器
處理用戶收到的郵件—投遞到郵箱

1.2 收發郵件的協議

SMTP:25/tcp
POP3:110/tcp
IMAP:143/tcp

1.3 搭建基本郵件服務器

1.3.1安裝postfix軟件包

yum -y install postfix
rpm -qa| grep postfix

1.3.2 /etc/postfix/main.cf

postfix的主配置文件,特點是從上到下,後設置的選項會覆蓋之前設置的選項,即後應用的生效
vim /etc/postfix/main.cf
到76行,把#刪掉,修改myhostname = server0.example.com #指定主機名

到83行,把#刪掉,修改mydomain = example.com #指定域名
到99行,把#刪掉,修改myorigin = server0.example.com #向外發郵件時標記的來源域
到116行,把#刪掉,修改inet_interfaces = loopback-only#僅允許本機
到164行,把#刪掉,修改mydestination = server0.example.com #根據郵件後綴來判斷是否為本域郵件,名字為server0.example.com就是本域
myhostname = server0.example.com
mydomain = example.com
myorigin = server0.example.com
inet_interfaces = loopback-only
mydestination = server0.example.com

1.3.3 systemctl restart postfix systemctl enable postfix

重啟並設置開機啟動postfix

1.4 測試郵件的收發

1.4.1創建兩個用戶yg、xln

useradd yg
echo 123|passwd --stdin yg
useradd xln
echo 123|passwd --stdin xln
id yg
id xln

1.4.2 發送郵件命令

mail -s ‘subjec‘ -r [from] [to]例子1:[email protected]發郵件給[email protected],主題為test01

br/>例子1:[email protected]發郵件給[email protected],主題為test01
Hi xln
long time no see
how are you
. #當一行只有一個.的時候系統判斷為信件結尾,結束寫郵件並發出例子2:[email protected]發郵件給[email protected],主題為test01
br/>例子2:[email protected]發郵件給[email protected],主題為test01

1.4.3 接收郵件命令

mail -u [username]
例子:xln查看yg發來的郵件
mail -u xln #回車進入交互式界面
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 1 message 1 new

N 1 [email protected] Thu Nov 2 11:26 20/604 "test01"
& 1 #N表示新郵件,1表示郵件編號為1
Message 1: #輸入1選擇第一封郵件
From [email protected] Thu Nov 2 11:26:52 2017
Return-Path: <[email protected]>
X-Original-To: xln
Delivered-To: [email protected]
Date: Thu, 02 Nov 2017 11:26:52 +0800
From: [email protected]
To: [email protected]
Subject: test01
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: R

Hi xln
long time no see
how are you

& delete 1-10 #刪除1~10封郵件

1.5 nullclient郵件服務器

1.5.1 定義

空客戶端郵件服務器。本身沒有任何郵箱帳號,不需要投遞任何郵件。但是可以為用戶代發郵件

1.5.2 應用場景

在企業內網的內部系統中,當web、ftp等服務器連接外網的速度較慢,或者無法訪問外網。當服務器出現異常時,為了能快速的發出報警郵件,可以直接聯系郵件空客戶端,以最快的速度把郵件發給運維人員,以便運維人員及時處理。
但由於監控服務器的盛行,現在很少使用空客戶端方式了

1.5.3 配置desktop0為後端郵件服務器

在desktop0上操作:
兩種方法:
方法1:通過腳本lab smtp-nullclient setup自動設置,實質上修改和添加了這些行
修改部分:
inet_interfaces = all
添加部分:
mynetworks = 172.25.0.0/24
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.pem

方法2:手動修改配置文件
vim /etc/postfix/main.cf
到99行,把#刪掉,修改myorigin = desktop0.example.com #默認補全的郵件後綴
到116行,把#刪掉,修改inet_interfaces = all #允許所有客戶端
到164行,把#刪掉,修改mydestination = desktop0.example.com #投遞域的域名,名字為desktop0.example.com就是本域
mynetworks = 172.25.0.0/24
myorigin = desktop0.example.com
mydestination = desktop0.example.com
inet_interfaces = all

1.5.4配置nullclient服務器

在server0上操作:
vim /etc/postfix/main.cf
到99行,把#刪掉,修改myorigin = desktop0.example.com #向外發郵件時標記的來源域
到116行,把#刪掉,修改inet_interfaces = loopback-only #僅允許本機
到164行,把#刪掉,修改mydestination = #設置為空表示沒有投遞域
到264行,把#刪掉,修改mynetworks = 127.0.0.0/8 [::1]/128
到317行,把#刪掉,修改relayhost = 172.25.0.10 #指定後端(目標)郵件服務器
重啟服務 systemctl restart postfix systemctl enable postfix
inet_interfaces = loopback-only
mydestination =
mynetworks = 127.0.0.0/8 [::1]/128
relayhost = [smtp0.example.com]

1.5.5 測試nullclient服務器

在server0上寫一封郵件給student,此時在server0上無法收到郵件,郵件會轉到desktop0上去

二、數據庫服務基礎

2.1 表字段&表記錄

編號 姓名 手機號 住址
1 zs 1111111111 上海
2 ls 2222222222 北京
3 ww 3333333333 廣州
黑色區域:表字段
其他區域:表記錄

2.2 yum -y install mariadb-server mariadb

安裝mariadb-server(服務端)和mariadb(客戶端及工具)

2.3 MariaDB簡介

由MySQL的開發者開發出來的開源數據庫系統
端口號 3306/tcp
不支持tab鍵
所有命令必須以;結尾

2.4 常用命令

show databases;#顯示所有數據庫
create database nsd1709;#創建數據庫nsd1709
drop databases nsd1709;#刪除數據庫nsd1709
status;#查看狀態
quit;#退出
\c 命令輸入錯誤後結束命令行
‘; 命令輸入錯誤後結束命令行
"; 命令輸入錯誤後結束命令行
\G;讓查詢的結果豎著顯示

2.5 修改數據庫密碼

2.5.1 初始化設置密碼

註意!數據庫管理員是root,但是與系統的root用戶沒有任何關系
在linux系統裏執行
mysqladmin -u root password ‘123‘ #設置數據庫管理員root的密碼為123
修改密碼後,必須通過mysql -uroot -p123登陸數據庫,但是這個命令會顯示密碼,極其不安全。必須以交互式登陸
mysql -uroot -p
Enter password:

2.5.2 破解密碼

在linux系統裏執行
systemctl stop mariadb
mysqld_safe --skip-grant-tables & #跳過檢查授權表啟動
[1] 25828
[root@room4pc09 mysql]# 170925 14:46:03 mysqld_safe Logging to ‘/var/log/mariadb/mariadb.log‘.
170925 14:46:03 mysqld_safe A mysqld process already exists
mysql -h127.0.0.1 -uroot -p
SET password for ‘root‘@‘localhost‘=password(‘newpassword‘);
exit
kill -9 25828
systemctl start mariadb

2.5.3 修改密碼方法1

在數據庫裏執行
use mysql;
UPDATE user SET password=password(‘newpassword‘) WHERE user=‘root‘;
flush privileges;
exit

2.5.4修改密碼方法2

在數據庫裏執行
SET password for ‘root‘@‘localhost‘=password(‘newpassword‘);
systemctl start mariadb

2.6 主配置文件修改

vim /etc/my.cnf
在mysqld下面另起一行,輸入下面的語句
skip-networking #跳過網絡監聽,只對本機提供服務

2.7 數據庫的增刪改查

表和表之間用”,”
庫和表之間用”.”

2.7.1 show databases;

顯示所有的數據庫

2.7.2 use nsd;

選擇並打開nsd數據庫

2.7.3 show tables;

查看數據庫裏面的表

2.7.4 導入數據庫

命令格式:mysql -u[username] -p [database_name] < [backup_files]
在linux系統中執行
wget http://172.25.0.254/pub/materials/users.sql
mysql -uroot -p nsd < users.sql
mysql -uroot -p
MariaDB [nsd]> use nsd;
MariaDB [nsd]> show tables;
+---------------+
| Tables_in_nsd |
+---------------+
| base |
| location |
+---------------+

2.7.5 select * from nsd.base;

命令格式:select 表字段 from 數據庫名.表格名;

查詢nsd數據庫的base表的所有表字段信息
MariaDB [nsd]> select * from nsd.base;
+------+---------+------------+
| id | name | password |
+------+---------+------------+
| 1 | Tom | 123 |
| 2 | Barbara | 456 |
| 3 | James | solicitous |
| 4 | Smith | tarena |
| 5 | Barbara | pwd123 |
+------+---------+------------+
5 rows in set (0.00 sec)

2.7.6 select * from base where name=‘tom‘;

查詢name為tom的用戶
MariaDB [nsd]> select * from base where name=‘tom‘;
+------+------+----------+
| id | name | password |
+------+------+----------+
| 1 | Tom | 123 |
+------+------+----------+
1 row in set (0.00 sec)

2.7.7 select * from nsd.base where password=‘solicitous‘ and id=‘3‘;

查詢密碼為solicitous而且id=3的表記錄

2.7.8 select * from nsd.base where name=‘Barbara‘ or id=‘3‘;

查詢名字為Barbara或者id=3的表記錄

2.7.9 select count(*) from base,location where base.name=‘Barbara‘ and location.city=‘Sunnyvale‘ and base.id=location.id;

查找住在Sunnyvale的名字叫Barbara的人數

2.8 數據庫的授權

命令格式:grant 權限列表 on 數據庫名.表名 to 用戶名@localhost identified by ‘密碼‘

2.8.1 權限列表

insert:增加
delete:刪除
update:修改
select:查詢

grant select on nsd.* to lisi@localhost identified by ‘456‘ #lisi用戶在本地登錄後擁有對nsd庫的所有表的查詢權限
select user,password from mysql.user where user=‘lisi‘;

2.9 數據庫的修改

2.9.1 insert base values(6,‘Barbara‘,123456);

增加一條表記錄,id=6,name=Barbara,密碼=123456

2.9.2 insert location values(6,‘Sunnyvale‘);

增加一條表記錄,id=6,city=Barbara

2.10 數據庫記錄的刪除

delete from user where password=‘‘ and user=‘root‘;
刪除用戶名為root,並且密碼為空的記錄

2.11 查看表結構

desc nsd.base;

Day08 電子郵件基礎&數據庫基礎(Enginner02)