2020年12月23日 星期三

roundcube upgrade

1. 避免升級失敗,先備份現有的roundcube檔案與資料庫

2. 下載要更新的roundcube版本並解壓縮

3. 在php.ini內,確定"system"不在"disable_functions" 設定值內

4.到解壓縮的新版本資料夾下,執行 bin下的installto.sh

cd 解壓的新版本資料夾

bin/installto.sh 目前版本的安裝資料夾

5. 收工!


2020年10月20日 星期二

Windows下outlook 2016 OST檔案存放位置修改

關閉outlook,執行regedit

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook

"新增""可擴充字串" 名稱"ForcePSTPath", 字串是 “新的存放路徑”

設定好後,開啟outlook,刪除要變更位置的mail帳號,重新新增imap帳號!


2020年9月21日 星期一

Roundcube安裝google reCAPTCHA

 下載:

https://github.com/dsoares/roundcube-rcguard

安裝:

1.將資料夾放置於plugins下

2.在reCAPTCHA 的資料夾下,將預設的config.inc.php.dist 複製一份為config.inc.php,並依需求修改內容

3.以下兩個key須至google申請

 // reCAPTCHA site key

$rcmail_config['recaptcha_publickey']

// reCAPTCHA secret key

$rcmail_config['recaptcha_privatekey'] 

4.依所使用的資料庫類別,匯入在SQL資料夾下相對應的表單至roundcube的資料庫下


2020年8月29日 星期六

如何查詢電腦中所安裝的Office是使用哪一組產品金鑰

”命令提示字元”中,在Office的安裝路徑下,輸入以下指令來查詢:

cscript ospp.vbs /dstatus



2020年8月14日 星期五

Ubuntu 20.04 remove cloud init

1.

echo 'datasource_list: [ None ]' | sudo -s tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg

2.

sudo apt-get purge cloud-init

3.

sudo rm -rf /etc/cloud/; sudo rm -rf /var/lib/cloud/

4.

sudo reboot

2020年7月14日 星期二

Roundcube 設定補充

在config.inc.php內:
#修改使用者資訊內顯示的郵件domain name
$config['mail_domain'] = 'mail.liaohaha.tw';
#指定郵件預設編碼
$config['default_charset'] = 'UTF-8';
#預設一個封存用的資料夾(配合archive套件)
$config['archive_mbox'] = 'Archive';
#自動新增所有預設的資料夾
$config['create_default_folders'] = true;

2020年6月28日 星期日

postfix 阻擋連線

完整程式碼:

#!/bin/bash

grep -o 'unknown\[.*\]' /var/log/mail.log |grep -o '\[.*\]' | sed 's/\[//'|sed 's/\]//'|grep -v 192.168.118.252 |sort|uniq > DNSBL.txt

grep 'listed by domain' /var/log/mail.log |awk '{print $7}' |sort|uniq >> DNSBL.txt

ip=($(cat DNSBL.txt |sort |uniq)) #設定ip陣列

echo ${ip[@]} #叫出陣列值

len=${#ip[*]} #陣列長度

echo $len

/sbin/iptables -F

for i in "${ip[@]}" #迴圈

do

        /sbin/iptables -t filter -I INPUT -p tcp -s $i -j DROP

done


阻擋下列這類型的連線:

Jun 28 14:33:21 relaynat postfix/smtpd[46810]: connect from unknown[185.143.73.103]

Jun 28 14:33:22 relaynat postfix/smtpd[46810]: disconnect from unknown[185.143.73.103] ehlo=1 quit=1 commands=2

語法說明:

grep -o 'unknown\[.*\]' /var/log/mail.log |grep -o '\[.*\]' | sed 's/\[//'|sed 's/\]//'|grep -v 192.168.118.252 |sort|uniq > DNSBL.txt

grep -o 'unknown\[.*\]' /var/log/mail.log

unknown[185.143.73.134]

grep -o 'unknown\[.*\]' /var/log/mail.log |grep -o '\[.*\]' 

[185.143.73.103]

grep -o 'unknown\[.*\]' /var/log/mail.log |grep -o '\[.*\]' | sed 's/\[//'|sed 's/\]//'

185.143.73.134

grep -o 'unknown\[.*\]' /var/log/mail.log |grep -o '\[.*\]' | sed 's/\[//'|sed 's/\]//'|grep -v 192.168.118.252
grep -v 192.168.118.252:排除192.168.118.252
sort|uniq > DNSBL.txt
sort:排序
uniq:去除重複,uniq只比對要列印資料的上一行是否重複,所以須先排序!

阻擋下列這類型的連線:

Jun 28 14:29:20 relaynat postfix/dnsblog[45760]: addr 185.143.73.58 listed by domain zen.spamhaus.org as 127.0.0.4

語法說明:

grep 'listed by domain' /var/log/mail.log |awk '{print $7}' |awk '!x[$0]++' >> tmpList.txt

grep 'listed by domain' /var/log/mail.log 

Jun 28 14:34:05 relaynat postfix/dnsblog[45760]: addr 185.143.72.34 listed by domain zen.spamhaus.org as 127.0.0.4

grep 'listed by domain' /var/log/mail.log |awk '{print $7}' 

185.143.72.34

awk '!x[$0]++'

去除重複的資料
awk -F"" '{ for (i=6; i<=NF; i++) print $i }'
  1. F定義awk要使用的分隔符為空格,這也是awk預設的分隔符。

  2. NF定義欄位/列的總數,因此循環將從第6個欄位開始到最後一個欄位/列。

  3. 其中$N檢索第n個欄位的值,因此列印$i將基於循環計數列印當前欄位/列。




2020年6月26日 星期五

Postfix Relay-Nat


Firewall---SMTP--->Postfix Relay-Nat(relay.demo.com)---SMTP--->Postfix(mail.demo.com)

步驟:
        1.新增Postfix Relay-Nat主機的A紀錄,使DNS是能查詢到Postfix Relay-Nat的A紀錄
        relay.demo.com. 86400 IN A 1.2.3.4
        2.將要Realy的mail domain MX紀錄對應改為Postfix Relay-Nat
        mail.demo.com. 3600 IN MX 20 relay.demo.com.  
        3.修改/etc/postfix/master.cf,新增定義一個relay-nat的服務
         elay-nat unix  -       -       -       -       -       smtp   
        4.修改/etc/postfix/main.cf,新增允許relay的domain name和傳輸路由表
        relay_domains = mail.demo.com #多網域可用“,”隔開        
        transport_maps = hash:/etc/postfix/transport
        5. 編輯/etc/postfix/transport檔案,ip外的[]是指不對ip位址做DNS查詢
        mail.demo.com             relay-nat:[192.168.1.252]
        6.編譯/etc/postfix/transport
        $postmap /etc/postfix/transport
        7.編譯完會產生資料庫檔:transport.db,可用postmap測試對應
        $ postmap -q mail.demo.com transport
    relay-nat:[192.168.1.252]
        8.重新啟動postfix







      
        

2020年6月22日 星期一

Centos 6 安裝vmtools

先在vm管理介面啟動Install VMware Tools...

在centos6下掛載ISO

mount /dev/cdrom /mnt

接著如以下操作解壓縮安裝檔

cd /mnt

cp VMwareTools-10.3.21-14772444.tar.gz /tmp

cd /tmp

tar zxvf VMwareTools-10.3.21-14772444.tar.gz

先安裝需要元件

yum -y install gcc kernel-devel

執行安裝檔

cd vmware-tools-distrib/

./vmware-install.pl

過程中的問題全部按Enter跳過即可!




2020年6月1日 星期一

Ubuntu 16.04 安裝 PHP 5.6

# 列出目前已安裝的PHP
dpkg -l | grep php| awk '{print $2}'
# 移除目前安裝的PHP
sudo apt-get purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

增加 PPA repo
增加 PPA
sudo add-apt-repository ppa:ondrej/php
# 出現此錯誤訊息: add-apt-repository: command not found,執行下列指令解決
sudo apt-get install software-properties-common

# 更新 repo
sudo apt-get update
# 安裝 PHP 5.6
sudo apt-get install php5.6
# 若有需要 PHP-FPM 5.6 ,可執行下列指令安裝
sudo apt-get install php5.6-fpm
# 安裝extension
sudo apt-get install php5.6-mbstring php5.6-mcrypt php5.6-mysql

# 檢查 PHP 版本 
php -v


2020年5月27日 星期三

Remove cloud-init from Ubuntu

echo 'datasource_list: [ None ]' | sudo -s tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg
sudo apt-get purge cloud-init
sudo rm -rf /etc/cloud/; sudo rm -rf /var/lib/cloud/

2020年4月17日 星期五

將 Let’s Encrypt 申請到的 SSL 憑證用在 Postfix、Dovecot

Let’s Encrypt申請的憑證會以申請的domain name當作資料夾名稱放到 /etc/letsencrypt/live/ 目錄下,檔案會有四個
檔案名稱說明
cert.pem申請網域的憑證
chain.pemLet's Encrypt 的憑證
fullchain.pemcert.pem 及 chain.pem 合併檔案
privkey.pem申請網域的憑證密鑰

Postfix:
編輯/etc/postfix/mail.cf,修改以下設定:

# TLS parameters

#default: empty;none:TLS will not be used;may:Opportunistic TLS;encrypt:Mandatory TLS encryption

#2.3以後版本使用,取代2.2以前的smtpd_use_tls=yes

#user client smtp to server

smtpd_tls_security_level = encrypt

#mail server smtp to mail server

smtp_tls_security_level = encrypt

#Discovering servers that support TLS

smtp_tls_note_starttls_offer = yes

#default: empty;Name of the file containing the optional Postfix SMTP server TLS session cache.

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

#default: empty;Name of the file containing the optional Postfix SMTP client TLS session cache.

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache


#憑證位置 

#postfix <= 3.3

smtpd_tls_cert_file = /etc/letsencrypt/live/你申請的Domain/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/你申請的Domain/privkey.pem
smtp_tls_CApath = /etc/letsencrypt/live/你申請的Domain/

#postfix >= 3.4

smtpd_tls_chain_files = /etc/letsencrypt/archive/你申請的Domain/privkey.pem,

                        /etc/letsencrypt/archive/你申請的Domain/fullchain.pem


#在mail的header加上SSL/TLS 相關資訊

smtpd_tls_received_header = yes

#客戶端/客戶發送郵件到我的服務器時,是否強制加密

smtpd_tls_auth_only = yes

#Log

smtpd_tls_loglevel = 1



存檔後重新啟動postfix即可生效!
使用telnet測試:
$ telnet localhost 25
接著輸入ehlo localhost
ehlo localhost  
250-mail.liaohaha.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
有顯示 STARTTLS 即代表功能有正常運作!
再修改master.cf,將以下兩行註解拿掉
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
存檔後重新啟動postfix即可生效!

上述方式是開啟 SMTP STARTTLS 的加密傳輸,但在Microsoft outlook上,這個協定經常無法正常使用....
可以下列方式開啟SMTPS TLS加密(PORT 465)
編輯 /etc/postfix/master.cf,找到以下三行,拿掉行首的註解,若找不到,新增以下三行:
smtps     inet  n       -       y       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
重新啟動postfix。



Dovecot:  
編輯 /etc/dovecot/conf.d/10-ssl.conf

ssl_cert = </etc/letsencrypt/archive/你申請的Domain/cert.pem

ssl_key = </etc/letsencrypt/archive/你申請的Domain/privkey.pem

ssl_ca = /etc/letsencrypt/archive/你申請的Domain/fullchain.pem


ssl_min_protocol = TLSv1.2


存檔後重新啟動dovecot!


2020年4月1日 星期三

Linux history 顯示日期

設定
HISTTIMEFORMAT='%F %T '
%F – expands to full date same, as %Y-%m-%d (year-month-date).
%T – expands to time; same as %H:%M:%S (hour:minute:seconds).

暫時設定:
export HISTTIMEFORMAT='%F %T'

永久設定(個人):
vim ~/.bashrc # 於最下面加入:
HISTTIMEFORMAT='%F %T '
source ~/.bashrc
再開啟history即可看到時間日期
PS:'%F %T '因為%F與%T中間有空格,所以中間有空格,所以顯示時,日期和時間也會隔一個空格!
永久設定(所有人):
將上述設定值添加在/etc/profile內!

另外功能:
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTCONTROL=ignoredups:ignorespace
HISTSIZE=5000
HISTFILESIZE=5000
HISTTIMEFORMAT='%F %T '

設定後執行history的內容
 1293  2020-04-15 16:01:25ls
 1294  2020-04-15 16:01:27ls -l
 1295  2020-04-15 16:02:49sudo su -
 1296  2020-04-15 16:32:02exit
但,若去觀看.bash_history內容,會顯示
#1587092596
history 
#1587092610
source ~/.bashrc
#1587092615
cat .bashrc 
#1587092636
cat .bash_history 
#1587092826
exit

#後面的時間戳記,是從1970/01/01起經過的秒數,可以用date轉換為日期時間
$ date -d @1587092826
Fri Apr 17 11:07:06 CST 2020




2020年3月29日 星期日

Windows 預設停用 SMB2 中的訪客存取

在 Windows 10 (版本 1709)、Windows 10 (版本 1903)、Windows Server (版本 1709) 和 Windows Server (版本 1903) 以及之後的 Windows Server 版本,SMB2 用戶端不再允許下列動作:

來賓帳戶存取遠端伺服器
提供無效認證之後將遞補至訪客帳戶

解決方案

修改下列群組原則:

電腦設定\系統管理範本\網路\Lanman 工作站
「啟用不安全的訪客登入」

重新開機

2020年3月18日 星期三

Nginx停用TLS 1.0、1.1

編輯/etc/nginx/nginx.conf,看到以下的設定
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
將TLSv1 TLSv1.1移除,修改如下:
ssl_protocols TLSv1.2 TLSv1.3;
存擋後重新啟動nginx
若TLSv1、TLSv1.1依然沒有停用,檢查/etc/nginx/sites-available下的設定檔,將找到的
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
修改如下:
ssl_protocols TLSv1.2 TLSv1.3;
存擋後再重新啟動nginx

如果是使用Certbot自動續訂Let’s Encrypt certificates,檢查/etc/letsencrypt/options-ssl-nginx.conf,找到:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
修改如下:
ssl_protocols TLSv1.2 TLSv1.3;
存擋後再重新啟動nginx

2020年3月17日 星期二

Linux下調整硬碟磁區大小

使用parted,parted取代fdisk,可建立2T以上的分割區(fdisk只可製作2T以下的磁區)
安裝
sudo apt install parted

執行
sudo parted
離開
quit

parted下的操作
列出指令
help

列出系統上的硬碟
print 

(若有多顆硬碟)選擇要作用的硬碟
select /dev/sdX

調整磁區大小(若縮小磁區,有遺失資料的風險)
resizepart
輸入磁區代號、要結束的磁區大小(調整後)

設定完後,可用print查看,若沒問題,即可離開parted!(parted的改變是即時的,設定完立即套用)

調整完磁區大小後,會發現df指令下,磁區的容量依然是顯示舊的數值,需執行以下指令套用修改:
sudo resize2fs /dev/sdax

2020年3月6日 星期五

Domain Administrator no permissions, Local Admin has permissions in windows 10

run gpedit.msc to open Group Policy Editor,then switch to 
Computer Configuration---> Windows Settings---> Security Settings ---> Local Policies---> Security Options
then enable
"User Account Control: Admin Approval Mode for the Built-in Administrator account", after all restart Windows to take effect.

2020年1月9日 星期四

Too many open files in system

查詢目前的環境參數
root@backup:~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7727
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 10240
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7727
virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited
可以看到目前允許的開啟檔案上限
暫時調整 open files (重開機會還原預設值)
sudo ulimit -n 2048

永久改變必須修改 sudo vim /etc/security/limits.conf
* soft nofile 10240

* hard nofile 10240

soft 是設定軟體資源限制 hard 是設定硬體資源限制 * 是代表所有使用者

存檔後需登出再重新登入才會生效!

上調系統預設限制
開啟檔案 /etc/sysctl.conf
加入以下一行:
fs.file-max = 2097152
儲存檔案後離開編輯器,下次開機設定會生效,或者執行以下指令讓設定立即生效:
sysctl -p