顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2019年1月5日 星期六

[Linux] Rsync 檔案同步備份 & 差異備份

因為最近在同步檔案於是上網查了一下,能怎樣更有效地做備份
一般都只是用cp這個指令來做,只是他會變得copy全部的檔案,耗費時間太長了
也會佔用頻寬還有機器的效能,後來查到了可以用rsync這個指令來做
下面是指令的介紹

rsync 基本用法

rsync 的基本語法結構如下:
rsync 參數 來源檔案 目的檔案
以下是最常見的幾個參數:
  • -v:verbose 模式,輸出比較詳細的訊息。
  • -r:遞迴(recursive)備份所有子目錄下的目錄與檔案。
  • -a:封裝備份模式,相當於 -rlptgoD,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記。
  • -z:啟用壓縮。
  • -h:將數字以比較容易閱讀的格式輸出。
rsync 最簡單的用法就是複製本地端的檔案:
rsync -avh myfile.gz /home/pi/tmp/
sending incremental file list
myfile.gz

sent 14.34M bytes  received 35 bytes  28.67M bytes/sec
total size is 14.33M  speedup is 1.00
其效果就跟 cp -r 類似,可將 myfile.gz 複製到 /home/pi/tmp/ 目錄中,不過如果執行第二次時,rsync 就會自動跳過沒有變動的檔案:
rsync -avh myfile.gz /home/pi/tmp/
sending incremental file list

sent 74 bytes  received 12 bytes  172.00 bytes/sec
total size is 14.33M  speedup is 166,658.15
這種用法對於檔案或目錄都適用:
rsync -avh /path/to/myfolder /home/pi/tmp/

rsync 遠端備份

rsync 也可以用於不同台機器之間的遠端備份,這樣的用法就跟 scp 指令很像,不過 rsync 會更有效率:
rsync -avzh /mypath/myfile.gz pi@192.168.1.12:/mybackup/
這樣就會將本地端的 myfile.gz 備份至 pi@192.168.1.12 的 /mybackup/ 目錄中,在遇到這種遠端備份的狀況時,rsync 預設會以 ssh 的方式登入遠端的機器,所以在執行這行備份指令之後,要接著輸入pi@192.168.1.12 的密碼,接著就會開始備份資料,輸出會類似這樣:
pi@192.168.1.12's password: 
sending incremental file list
myfile.gz

sent 13.62M bytes  received 34 bytes  48.56K bytes/sec
total size is 14.33M  speedup is 1.05
而這裡我們多加入一個 -z 參數,目的是讓 rsync 可以自動將資料壓縮後再傳送,並在遠端接收到資料後自動解壓縮,減少網路傳輸的資料量。
rsync 也可以將遠端的檔案備份至本地端,其語法也跟 scp 類似:
rsync -avzh pi@192.168.1.12:/mypath/myfile.gz /mybackup/
pi@192.168.1.12's password: 
receiving incremental file list
myfile.gz

sent 30 bytes  received 23.74M bytes  571.98K bytes/sec
total size is 24.14M  speedup is 1.02
這裡的 rsync 在複製檔案時,由於我們加入了 -a 參數,所以可以用於檔案或是整個目錄的備份,相當於 scp -r 的效果,而且由於 rsync 只會傳輸有變動的部份,所以通常在異地備份資料時都會使用這種方式來處理。

-v, --verbose 詳細模式輸出訊息
-q, --quiet 安靜模式,幾乎沒有訊息產生。常用在以 cron 執行 rsync
-c, --checksum 打在傳送之前透過 128bit 的 MD4 檢查碼來檢查所有要傳送的檔案(會拖慢速度)
-a, --archive 備份模式,表示以遞迴方式傳輸文件,並保持所有文件屬性,等於 -rlptgoD(沒有 -H)
-r, --recursive 對子目錄以遞迴模式處理
-R, --relative 使用相對路徑名稱
     --no-relative 不使用相對路徑
     --no-implied-dirs 

-b, --backup 產生備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名為 ~filename。可以使用 --suffix 選項來指定不同的備份文件前綴。
     --backup-dir=DIR 將備份文件(如~filename)存放在在目錄下。
     --suffix=SUFFIX 定義備份文件前綴
-u, --update 僅僅進行更新,也就是略過所有已經存在於目的端,且文件時間比要備份的檔案為新。(不覆蓋較新的文件) 
     --inplace 
-K, --keep-dirlinks 接收方將連結到資料夾的檔案視為資料夾處理
-l, --links 保留符號連結
-L, --copy-links 像對待常規文件一樣處理符號連結
     --copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的連結
     --safe-links 忽略指向來源端路徑目錄樹以外的連結
-H, --hard-links 保留硬式連結
-p, --perms 保留檔案權限
-o, --owner 保留檔案擁有者資訊(root only)
-g, --group 保留檔案所屬群組資訊
-D, --devices 保留設備檔案資訊(root only)
-t, --times 保留檔案時間資訊
-S, --sparse 對稀疏檔案進行特殊處理以節省目的端的空間
-n, --dry-run 不實際執行傳送,只顯示將會有的傳輸動作
-W, --whole-file 複製檔案,不進行增量檢測
     --no-whole-file 關閉 --whole-file 參數
-x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)
-B, --block-size=SIZE 強制透過 rsync 程式去比對修復 block-sizeforce,預設是700字節
-e, --rsh=COMMAND 定義所使用的 remote shell
     --rsync-path=PATH 定義 rsync 在遠端機器存放資料的路徑
     --existing 只比對更新目的端已經存在的檔案,而不備份那些新產生的檔案
     --ignore-existing 忽略目的端已經存在的檔案(也就是不更新)
     --delete 刪除傳送端已經不存在,而目的端存在的檔案
     --delete-excluded 除了把傳送端已經不存在,而目的端存在的檔案刪除之外,也刪除 --exclude 參數所包含的檔案
     --delete-after rsync 預設會在檔案傳送前進行相關刪除動作確保接收端有足夠的檔案空間,但可以透過 --delete-after 讓刪除動作在檔案傳送後再行刪除
     --ignore-errors 忽略任何錯誤既使是 I/O error 也進行 --delete 刪除動作
     --max-delete=NUM 定義 rsync 不要刪除超過 NUM 個檔案
     --partial rsync若遇到傳輸過程中斷時,會把那些已經傳輸的檔案刪除。在某種狀況下保留那些部分傳送的檔案是令人高興的。你可以透過 --partial 參數達到這個目的
     --partial-dir=DIR 在 --partial 參數啟動時,你還可以定義 rsync 把那些部分傳送的檔案寫入定義的資料夾,而非直接寫入目的端。需要注意的是,此資料夾不應該被其他使用者可以寫入(如:/tmp)
     --force 當目的端資料夾被傳送端非資料夾名稱覆蓋時,強制 rsync 刪除資料夾,即使該資料夾不是空的
     --numeric-ids 不將傳送端檔案的 UID 及 GID 值,與目的端的使用者/群組進行配對。若傳送端並沒有 UID 及 GID 的對應名稱(如:原帳號群組被刪除的遺留檔案),或目的端沒有相對應的帳號/群組,保留數字型態的 UID/GID
     --timeout=TIMEOUT 設定 I/O 逾時的時間(秒)。超過這個秒數而沒有資料傳送,rsync 將會結束。預設為 0,也就是沒有定義逾時時間
-I, --ignore-times 不跳過那些有同樣的時間和長度的文件,可以透過此參數關閉此快速檢查
     --size-only 只檢查檔案大小是否改變,不管時間存取點是否改變。通常用在 mirror,且對方時間不太正確時
     --modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,預設為 0 
-T, --temp-dir=DIR 定義 rsync 在接收端產生暫時性的複製檔案時使用資料夾暫存。預設是直接在接收端資料夾直接產生暫存檔案
     --compare-dest=DIR 定義 rsync 在目的端建立資料夾來比對傳送過來的檔案
     --link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結
-P, 等同於 --partial --progress 顯示備份過程,只是為了把參數簡單化
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
-C, --cvs-exclude 排除那些通常不希望傳送的檔案。定義的方式與CVS傳送相同:
                          RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ 符合以上條件的都會被忽略而不傳送
     --exclude=PATTERN 符合 PATTERN(規則表示式)樣式的檔案不進行傳送
     --exclude-from=FILE 和 --exclude 參數相同,不過是把不進行傳送的檔案事先寫入某一檔案,執行時,透過此參數讓 rsync 讀取。(; # 開頭的行列或空白行會被 rsync 忽略)
     --include=PATTERN 指定義 rsync 不要排除符合 pattern 樣式的檔案
     --include-from=FILE 和 --include 參數相同,只不過把要包含的檔案寫到某一檔案
     --files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案,讓 rsync 讀取
                             如:rsync -a --files-from=/tmp/foo /usr remote:/backup
-0, --from0 定義檔案所要讀取的檔案是null字元結尾
     --version 顯示 rsync 版本
     --daemon 定義 rsyn c以 daemon 型態執行
     --no-detach 當以 daemon 型態執行時,不要進行分裂且變成背景程序
     --address=ADDRESS 定義所要連結(bind)的ip位址或是 host 名稱(daemon限定)
     --config=FILE 定義所要讀取的設定檔 rsyncd.conf 位置(daemon 限定)
                        預設值為 /usr/local/etc/rsyncd.conf
     --port=PORT 定義 rsyncd(daemon)要執行的 port(預設為 tcp 873)
     --blocking-io 使用 blocking I/O 連結遠端的 shell,如 rsh、remsh
     --no-blocking-io 使用 non-blocking 連結遠端的 shell,如 ssh(預設值)
     --stats 顯示檔案傳送時的資訊狀態
     --progress 顯示傳送的進度(給檔案傳送時,怕無聊的人用的..)
     --log-format=FORMAT 定義 log 的格式(在 rsyncd.conf 設定)
     --password-file=FILE 從檔案讀取與遠端 rsync 伺服器連結的密碼
     --bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)
     --write-back=FILE 把紀錄資料寫入一個檔案(給其他相同環境且相同需求的機器使用)
     --read-batch=FILE 透過讀取紀錄檔案來進行傳輸(檔案由 --write-batch 參數產生)
     --checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)
-4, --ipv4 使用 IPv4 協定
-6, --ipv6 使用 IPv6 協定
-h, --help 顯示 rsync 求助資訊

限制網路頻寬

如果不想讓 rsync 在透過網路備份資料時,佔用太大的網路頻寬而影響正常的服務,可以加上 --bwlimit 參數來指定資料傳輸的速度上限:
rsync -avzh --bwlimit=100K pi@192.168.1.12:/mypath/myfile.gz /mybackup/
pi@192.168.1.12's password: 
receiving incremental file list
myfile.gz

sent 30 bytes  received 14.34M bytes  99.22K bytes/sec
total size is 14.33M  speedup is 1.00

參考:GT大的介紹 https://blog.gtwang.org/linux/rsync-local-remote-file-synchronization-commands/

2018年9月27日 星期四

[Security] 弱點掃描修正 - How to disable the mDNS service on CentOS

Run the following commands to disable the mDNS service on CentOS 6 and lower:
service avahi-daemon stop
chkconfig avahi-daemon off

Or when you have CentOS 7:
systemctl stop avahi-daemon
systemctl disable avahi-daemon

What is the avahi-daemon service?
The Avahi mDNS/DNS-SD daemon implements Apple’s Zeroconf architecture 
(also known as “Rendezvous” or “Bonjour”). 

The daemon registers local IP addresses and static services using 
mDNS/DNS-SD and provides two IPC APIs for 
local programs to make use of the mDNS record 
cache the avahi-daemon maintains.

 First there is the so called “simple protocol” which is used exclusively 
by avahi-dnsconfd (a daemon which configures unicast DNS servers 
using server info published via mDNS) and nss-mdns 
(a libc NSS plugin, providing name resolution via mDNS). 
Finally there is the D-Bus interface which provides a rich 
object oriented interface to D-Bus enabled applications.

2018年9月22日 星期六

[Security] 弱點掃描修正 - Network Time Protocol (NTP) Mode 6 Scanner

Network Time Protocol (NTP) Mode 6 Scanner

修改NTP配置文件
#vi /etc/ntp.conf
添加以下內容(建議使用此方式):
restrict default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
或在提供NTP查詢的網段加入noquery參數:
restrict 1.1.2.1 mask 255.255.255.0 nomodify notrap noquery
建議方法中兩條配置為高版本NTP中的默認配置,noquery參數限制了mode 6 query,可根據NTP服務端實際配置參考修改。
noquery:Deny ntpq and ntpdc queries. Time service is not affected.
notrap:Decline to provide mode 6 control message trap service to matching hosts.
nomodify:Deny ntpq and ntpdc queries which attempt to modify the state of the server.

參考文檔:http ://doc.ntp.org/current-stable/accopt.html
http://support.ntp.org/bin/view/Support/AccessRestrictions






作者:Shad0wpf
链接:https://www.jianshu.com/p/0106ff85df0b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[Security] 弱點掃描修正 - SSL Weak Cipher Suites Supported

SSL Weak Cipher Suites Supported

修改SSL配置文件中的的SSL Cipher參數
不同Web服務軟件的配置文件位置及參數名稱不同,需根據實際情況查找。
具體安全算法配置可參考此網站:https://cipherli.st/
如Apache修改以下內容:

驗證方法:
nmap -p 443 --script "ssl-enum-ciphers" xx.xx.xx.xx








作者:Shad0wpf
链接:https://www.jianshu.com/p/0106ff85df0b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[Security] 弱點掃描修正 - SSH Weak Algorithms Supported

SSH Weak Algorithms Supported

SSH的配置文件中加密算法沒有指定,默認支持所有加密算法,包括arcfour,arcfour128,arcfour256等弱加密算法。
整改測試參考:SSH&SSL弱加密算法漏洞修復.
修改SSH配置文件,添加加密算法:
vi /etc/ssh/sshd_config
最後面添加以下內容(去掉arcfour,arcfour128,arcfour256等弱加密算法):
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
ssh_config和sshd_config都是ssh服務器的配置文件,二者區別在於,前者是針對客戶端的配置文件,後者則是針對服務端的配置文件。
保存文件後重啟SSH服務:
service sshd restart or service ssh restart
驗證:
ssh -vv -oCiphers=aes128-cbc,3des-cbc,blowfish-cbc
ssh -vv -oMACs=hmac-md5
參考信息:http://linux.uits.uconn.edu/2014/06/25/ssh-weak-ciphers-and-mac-algorithms/
使用Nmap驗證:
nmap --script "ssh2*" 45.76.186.62


SSH Weak MAC Algorithms Enabled

與上述漏洞修復使用同樣的方式,sshd_config文件添加以下行:

MACs hmac-sha1,umac-64,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160





作者:Shad0wpf
链接:https://www.jianshu.com/p/0106ff85df0b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[Security] 弱點掃描修正 - SMB Password Encryption Not Required

SMB Password Encryption Not Required

Linux:修改smb配置文件
#vi /etc/samba/smb.conf
添加以下內容:
encrypt passwords = yes

Samba配置參考:https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html






作者:Shad0wpf
链接:https://www.jianshu.com/p/0106ff85df0b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[Security] 弱點掃描修正 - SMB Signing Disabled

SMB Signing Disabled

Linux:修改smb配置文件
#vi /etc/samba/smb.conf
添加以下內容:
server signing = mandatory
https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

Windows:編輯註冊表
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
修改RequireSecuritySignature值為1








作者:Shad0wpf
链接:https://www.jianshu.com/p/0106ff85df0b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

2018年3月30日 星期五

[Linux] Linux host 監控發至 Slack Chanel

誠如上一篇文章,當你產出slack key後就可以把key貼在script裡面:如下

這樣就可以發err 訊息至slack chanel,但是如果是內網的話要記得開port出去

或是開proxy


send-slack-err.sh

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

#!/bin/bash
HOSTSTATE=$1
HOSTADDRESS=$2
HOSTNAME=$3
HOSTOUTPUT=$4

stime=$(date "+%F %H:%M:%S")


msg="CLI-FAN Host: $HOSTSTATE alert for $HOSTNAME [$HOSTOUTPUT]!"

curl --proxy http://x.x.x.x:80 https://slack.com/api/chat.postMessage -X POST -d "channel=alert_chanel" -d "text=$msg" -d "token=xoxp-xxxxxxxxxxxxxxxxxxxxx"

2017年11月14日 星期二

[Linux] 不使用 Firewalld 改用 Iptable

因為之前參加考試發現在使用firewalld時,需要對每一個服務單獨開policy
覺得很麻煩,如果是考試的時候又會因為緊張而忘記,這邊告訴大家一個小技巧
就是使用iptable來去寫完所有要做的事情,一次搞定他就好了(針對於考試而已)
實務上盡量寫詳細一點比較安全

首先先對於firewalld 停用,然後再啟動iptables
老話一句,盡量用tab去補齊字元,不要自己打很容易出錯

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl enable iptables.service
systemctl start iptables.service

再來就是寫你需要的設定囉

vim fw.sh

#/bin/bash
iptables x
iptables y
iptables z


編輯完後記得把檔案權限提權(帥哥編這邊使用755)
然後都做完了對吧,重點來囉
一定要把他放入到rc.local裡面,不然開機不會自動執行喔
vim /etc/rc.local 放到最後一行
/root/fw.sh

都放完後,可以執行一遍看你的shell有沒有寫錯或是有問題
再用iptalbes -L 去查看是否有生效



2017年10月22日 星期日

[Linux] 透過proxy連外的設定方式

Linux 透過proxy連外的設定方式
一 RHEL(Fedora,centos應該也差不多)
1.CMD方式
暫時生效
# export http_proxy=http://username:password@"Proxy IP":port
# export ftp_proxy=http://username:passord@"Proxy IP":port
//其中如果proxy server不須要帳密,就只要打http://"Proxy IP":port即可

永久生效
# vim ~/.bashrc   //將上面兩行export加入即可
# source ~/.bashrc

YUM更新
# vim /etc/yum.conf   //加入

proxy=http://username:passord@"Proxy IP":port

[Linux] bash tab 自動補齊指令可用的選項參數

Linux bash tab 自動補齊指令可用的選項參數

Linux 系統指令操作時,按「tab」鍵,可自動補齊或提示可用的指令。
若希望其他後面要接的參數,也可自動補齊或提示。
可安裝 bash-completion
# yum install bash-completion
安裝後從新登入,即可。
若不想重新登入,可重新跑一次環境變數設定檔 /etc/profile 

# source /etc/profile

2017年10月13日 星期五

Centos Postfix Server安裝設定教學

Postfix軟體需求CentOS 6
(此編教學都是在CentOS 6下進行的,其它的Linux版本或是CentOS 5之前的版本可能不適用)
Postfix安裝
安裝指令
1
yum install postfix
CentOS 5之前預設的Mail Server服務是Sendmail,而在CentOS 6 後即是以Postfix當作預設的 Mail Server,Postfix比起Sendmail在設定上更容易上手,因此不需要像網路上其它的教學安裝system-switch-mail,因為system-switch-mail是用來將Sendmail切換成Postfix。
Postfix最主要的功能則是啟動SMTP的服務,也就是架設一台MTA(Mail Transfer Agent)。
Postfix設定
Postmail的主要設定都在”etc/postfix/main.cf”,編輯的方式如下
1
#vi /etc/postfix/main.cf
以下就來介紹要架設完一台MTA(也就是Mail Server的SMTP服務)的相關設定
1.設定Hostname,Hostname即是我們的郵件伺服器的主機名稱,是由英文字母或數字所組成,比如www.google.com或mail.google.com就是一個Hostname。Postmail的Hostname設定如下
尋找”#myhostname =”字串,預設會看到”#myhostname = host.domain.tld”和”#myhostname = virtual.domain.tld”這二行字串
請在這二行後面增加以下的字串設定即可
1
2
3
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = 你的主機名稱 #新增此行,約加在第77
2.設定網域名稱(Domain Name),主機名稱通常都是在建立在網域名稱之內,像是www.google.com則是網頁服務,mail.google.com則會是郵件主機服務,通常網域名稱都會是主機名稱(Hostname)去掉第一個掉包含前面的文字部份,比如說www.google.com的Domain則是google.com。 以下則是Postfix的網域名稱設定方法
尋找”#mydomain =”字串,預設會看到”#mydomain =domain.tld”
新增一行如下
1
2
#mydomain =domain.tld
mydomain = 你的網域名稱         #新增此行,約加在第  85
3.設定Origin Name,Origin Name是我們的郵件位址在”@”後面的文字內容,比如像是stnet253@gmail.com,gmail.com就是我們的Origin Name,而stnet253則是郵件擁有人的帳號名稱。以下為Postfix的Origin Name的設定。
尋找”#myorigin = $mydomain”字串,將”#”移除,變成
1
2
3
#myorigin = $mydomain                               #刪除此行

myorigin = $mydomain                 #新增此行,約加在第  100
4.設定 postfix 的監聽介面,Postfix預設只會監聽來自於本機端的所傳出的封包,必須使用下列設定,才可以傳收所有來自於網路端的所有封包。
尋找”#inet_interfaces = all”字串,將”#”移除 (表示此行Enable) 。
後面的”inet_interfaces = localhost”字串,在最前面加上”#”(表示disable此行設定)
此步驟的設定內容整理如下
1
2
3
4
inet_interfaces = all #修改此行,約在第 114
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, locatlhost
#inet_interfaces = localhost #修改此行,約在第 117 行
5.修改Postfix的通訊協定,目前網路的協定主流有IPv4與IPv6,在大部份的情況下,我們都是利用IPv4在通訊的,如果你的Mail Server沒有需要使用到IPv6,可以做以下的設定修改。
尋找” inet_protocols = all”字串,改成
1
inet_protocols = ipv4 #約在第 120
6.設定能收收信件的主機名稱,Postfix預設只能收到設定的Hostname與Domain Name以及本機端的信件,此步驟是再增加能收信件的網路名稱。
尋找”mydestination = $myhostname, localhost.$mydomain, localhost”字串,在最前面加入”#”(表示此行disable)。
將”#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain”的”#”移除(表示此行Enable)。
#mydestination = $myhostname, localhost.$mydomain, localhost
1
2
3
4
5
#修改此行,約在第 165行

mydestination = $myhostname, localhost.$mydomain, localhost, mydomain

#修改此行,約在第 166行
7.設定信任的用戶端,當要寄信時,會參考此值,若非信任的用戶,則不會幫你的信件轉到其它的MTA主機上
尋找”#mynetworks =”,在”#mynetworks = hash:/etc/postfix/networks”這行後面加上
1
2
3
4
5
#mynetworks = hash:/etc/postfix/networks

mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access

#加入此行,約在268行
8.規範可以 relay 的 MTA 主機位址,通常這個都直接設為mydestination
尋找”#relay_domains = $mydestination”,將”#”移除,變成
1
relay_domains = $mydestination                 #修改此行,約在第 298
9.設定郵件別名的路徑
檢查” alias_maps”設定是否為以下字串設定
1
alias_maps = hash:/etc/aliases                     #約在第 388
10.設定指定郵件別名表資料庫路徑
檢查” alias_ database”設定是否為以下字串設定
1
alias_database = hash:/etc/aliases               #約在第 399
在main.cf的設定整理如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
myhostname = 你的主機名稱                    #約在第  77

mydomain = 你的網載名稱                        #約加在第  85

myorigin = $myhostname                             #約在第 100

inet_interfaces = all                       #約在第 114 行,117 行要註解掉

inet_protocols = ipv4                     #約在第 120

mydestination = $myhostname, localhost.$mydomain, localhost, mydomain  #約在第166

mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access #約在268

relay_domains = $mydestination                 #約在第 298

alias_maps = hash:/etc/aliases                     #約在第 388

alias_database = hash:/etc/aliases               #約在第 399
11.設定完成後,請在終端機下輸入以下二行指令(詳細請參考後面章節” 設定郵件主機使用權限與過濾機制”及” 郵件別名”)

1
2
3
# postmap hash:/etc/postfix/access

# postalias hash:/etc/aliases
12.重啟postfix就可以利用smtp的服務收發信件,在終端機視窗下輸入

1
# service postfix restart
13.檢查SMTP服務是否開啟,如果有的話,輸入下列命列,會看到Port 25正在監聽的狀態

1
# netstat -tlunp | grep ':25'
Postfix測試
1.寄信測試
此時我們已經可以利用此台主機使用smtp收送電子郵件了, 利用mail指令來測試
mail root@網域名稱
Subject:Test
This is test mail
.
EOT
2.收信測試
當我們從內部或外部寄信過來時,預設的郵件存放位址如下:
/var/spool/mail(或 /var/mail)
從此目錄裡查看帳號名稱的檔案,我們所收發的信件都會存在這裡
如果使用 ip:222.222.222.222 的主機經由outlook smtp寄信 會被
554 5.7.1 <username@gmail.com>: Relay access denied
請在main.cf中mynetworks設定後面加入
1
mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access

1
2
cd /etc/postfix
vi access
加入外寄允許的ip
222.222.222.222  OK
不允許smtp
222.222.222.222 REJECT
修改完畢後要下行

1
postmap /etc/postfix/access