啟用postgrey心得

因為postgrey的機制會造成收信延遲, 所以必須設定白名單,與自動白名單,讓常用的郵件不再受限制.
1.白名單可在/etc/postfix/postgrey_whitelist_clients.local 新增
2.自動白名單,以centos 7為例子, 可在 /etc/sysconfig/postgrey 新增, 意指35天內,只要成功三次,就會一直是白名單成員
POSTGREY_OPTS=”–delay=60 –auto-whitelist-clients=5 –max-age=35″

tar 備份檔案,成功後刪除原檔案

將特定目錄下的所有檔案壓縮,
原本直接使用bzip2就可以了,直接將檔案壓起來, 但是我遇到nfs掛載,權限設定的限制,因此無法使用.
後來改用tar, 可以成功產生一個新的壓縮檔案, 但是原本檔案卻還在,會變成多餘
爬文發現tar有刪除原檔案的指令, 因此記錄下來

!/bin/sh
cd /u3/backup/exp/`date +'%d'`
for fich in *.dmp; do
tar -jcvf $fich.tar.bz2 --remove-files $fich
done

網域主控如何限制win 10的microsoft store app

windows 10帶來了新的app安裝方式 microsoft store, 有點類似 mac 的store ,
但是網域主控卻無法針對其中的app進行管控(除非全部都用win10 enterprise), 這對資訊安全有一定程度的影響,
畢竟漏洞多, 容易被入侵.
因此早期都採用整個microsoft store阻擋的方式, 禁用全部的app

但是問題來了, 有些好用的app也因次被鎖住無法使用, 這很是困擾
因此我來個土法煉鋼的方式, 避開microsoft的app(除了microsoft開頭字眼的app外,全部限制),
有點粗暴, 但目前也想不出好方法

,

powershell 寄送email(tls, port 587)

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
$EmailToAddresses = @("test1@test.com", "test2@test.com")
$EmailTo = ""
$EmailFrom = "it@test.com"
$Subject = "subjects"
$Body = "FYI"
$SMTPServer = "192.1.2.1"
$filenameAndPath = "C:\sayhello\sayhello.csv"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
foreach ($EmailTo in $EmailToAddresses)
{
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient.Send($SMTPMessage)
}

advanced installer 匯入vs 2019 出現 System.Runtime.CompilerServices.Unsafe 錯誤

好久沒有打包自己開發的程式,尤其是msi 或是 msix 方便讓網域主控站派送,
因此試用了advanced installer 17.5, 欲藉由匯入visual studio 2019 專案, 打包成msi檔案,

但是出現了,以下錯誤,

.ctor could not load file or assembly system.runtime.compilerservices.unsafe 4.0.4.1

原以為是vs的問題, 後來爬文終於找到解法, 這個問題似乎出現很久, advanced installer 呈現已知但是無解的狀態,看來真的很複雜.
步驟1. 安裝.net framework 4.7.2 (請與vs專案參考版本同步)
步驟2. 以管理者身分執行, developer command prompt for vs 2019

developer command prompt for vs 2019

步驟3. 輸入以下指令(請與vs專案參考版本同步)

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll"

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll"

Proxmox VE叢集cluster遇到的狀況

前陣子使用兩台PC安裝pve, 做成cluster方便管理, 但遇到其中一台只要使用zfs就會出錯, 另一台是正常的.

可是有一天遇到停電. 重開機之後, 另一台原本zfs正常,居然出現找不到zfs的錯誤訊息.
當時我登入到第一台查看, 系統出現zfs硬碟正常的, 但總是無法透過GUI介面新增回來, 最後發現, 我應該要登入第二台,才可讓zfs重新回來, 原來這兩台是合作, 又保有各自隱私呢.
哈!, 使用storage server習慣了, 遇到沒有storage server就手忙腳亂一番, 因此記錄下來.

老派的outlook 使用習慣

我個人很喜歡老派這個字, 英文叫做 old school


周遭的人有好多好多老派的人, 他們不喜歡網頁版郵件, 只習慣使用單機版的outlook收發信件, 作業系統更是windows不做他想.
因為公司多了一個越南廠, 考量初期VPN自架, 不作為主力, 該廠的通訊錄就無法透過vpn, 以LDAP方式分享 .

可是outlook通訊錄就只有兩種 : MAPI, LDAP
MAPI可以是離線版, LDAP必須連線才能使用

偏偏老派的做風就是: 離線也要能寫寫郵件, 看看郵件(pop3完全下載), 與存取完整的通訊錄

這下好了, 我得準備離線版的通訊錄, 爬文好幾天, 終於找到一個方式跟大家分享:

  1. 網域伺服器新增排程, 可下指令自動產生csv版本的通訊錄
  2. 自己開發一個app , 方便老派的人使用, 將csv檔案自動匯入到outlook通訊錄

網域伺服器上, 可透過powershell執行指令,匯出csv通訊錄

Get-ADUser -Filter 'mail -like "*<domain>"' -SearchBase "<search base>" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "<csv file location>" -NoTypeInformation -Encoding UTF8

以test.com為例子

Get-ADUser -Filter 'mail -like "*test.com"' -SearchBase "OU=taipei,DC=test,DC=com" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "c:\aaa.csv" -NoTypeInformation -Encoding UTF8

我開發的windows app, 使用visual studio 2019 community version , 語言使用vb

https://github.com/WilliamFromTW/ImportFromCsvToOutlook
https://github.com/WilliamFromTW/ImportFromCsvToOutlook/releases

因為時間不多, 未來也不打算花太多時間在通訊錄上面, 爬文的過程只能找到零星vba for outlook版本或是程式片段, 四處碰壁, 無人可以解答, 頂多就是要你教老派的人, 使用outlook匯出匯入功能, 一堆步驟, 將csv檔案匯入到outlook, 這簡直是天方夜譚.
因此就自行開發,並且開源, 這樣直接編譯成可安裝執行的APP, 讓他們透過定期提供的csv檔案, 就能很方便匯入通訊錄了.

(docker)透過Web修改Active Directory密碼-PWM

微軟的網域主控站非常好用, 尤其用來管控帳號密碼.
但是修改密碼,就必須透過加入網域的主機才能修改, 有點不方便,
尤其有些人的電腦並沒有加入網域, 要是想改密碼更是麻煩.

基於APACHE 2.0授權的 https://github.com/pwm-project/pwm 就能協助我們修改密碼.

簡易安裝步驟:



確認AD安裝certificate service


產生ad自己的證書(需要有private key) , 否則無法使用port 636 + tls 加密方式連線


安裝


1. 下載做好的container
https://www.pwm-project.org/artifacts/pwm
下載最新版docker images .tar 檔案
如:
wget https://www.pwm-project.org/artifacts/pwm/build/2020-08-20T23_36_49Z/pwm-docker-image-2.0.0-SNAPSHOT.tar

2. 安裝
docker load –input=pwm-docker-image-2.0.0-SNAPSHOT.tar

3. docker 執行
docker run -d –name pwm -p 8443:8443 –restart always –dns=<active directory ip> -v “/opt/pwm/config/:/config/” pwm/pwm-webapp

4. 登入進行第一次安裝設定
https://ip:84443/


安裝過程注意事項:


1. 連線要用加密的方式,否則無法改密碼
2. 要提供管理者群組的LDAP
如:
CN=Domain Admins,CN=Users,DC=test,DC=com
3. 因為PWM額外提供安全提問, 這些提問並不是Active Directory原本的, 需要另外提供空間,此時請選擇local db存放.
其實這不是很重要, 忘了密碼,還能在域控直接修改

安裝成功後, 請先用管理者帳號登入, 登入時需要額外設定忘記密碼的安全提問(管理者可直接跳過),
此時要選擇修改設定檔案, 將修改密碼的複雜度降低(但不可低於原本網域設定), 我是順便將安全提問改成一個就好.

搭配httpd reverse proxy


需修改SiteURL,改完需要重開pwm才能生效
這種方式可以讓網址擁有正式的加密證書(e.g. let’s encrypt)

roundcubemail 加上Active Directory 通訊錄範例

修改config/config.inc.php
網域伺服器 192.168.1.1
網域: test.com

$config['address_book_type'] = 'ldap';

$config['ldap_public']['Global'] = array(
'name' => '台灣總公司',
'hosts' => array('192.168.1.1'),
'port' => 3268,
'user_specific' => false,
'base_dn' => 'dc=test,dc=com',
'bind_dn' => 'cn=administrator,cn=users,dc=test,dc=com',
'bind_pass' => 'password',
'ldap_version' => 3,
'search_fields' => array (
'mail','cn',),
'name_field' => 'cn',
'email_field' => 'mail',
'writable' => 'false',
'scope' => 'sub',
'sizelimit' => 6000,
'sort' => 'cn',
'filter' => '(&(mail=)(|(&(objectClass=user)(!(objectClass=computer)))))',
'fuzzy_search' => true,
'global_search' => true
);

2022/11/05

我後來使用docker doundcubemail 重新安裝, 因為用latest , 當時版本 1.6.x 版本 , 發現上面的設定已經不能用了, 改用以下設定(紅色部分需調整)

$config['address_book_type'] = 'ldap';
$config['ldap_debug'] = true;
$config['ldap_public'] = array(
    'MyAdLdap' => array (
        'name' => 'TW',
        'hosts' => array('網域主機IP'),
        'sizelimit' => 6000,
        'port' => 3268,
        'use_tls' => false,
        'user_specific' => false,
        'base_dn' => 'OU=group,DC=test,DC=com',
        'bind_dn' => 'user@test.com',
        'bind_pass' => 'password',
        'writable' => false,
        'ldap_version' => 3,
        'search_fields' => array(
           'mail',
           'cn',
        ),
        'fieldmap' => array(
            'name' => 'cn',
            'email' => 'mail',
            'surname' => 'sn',
            'firstname' => 'givenName',
        ),
        'sort' => 'sn',
        'scope' => 'sub', # or 'list'
        'filter' => '(&(mail=*)(|(&(objectClass=user)(!(objectClass=computer)))(objectClass=group)))',
        'global_search' => true,
        'fuzzy_search' => true,
        'vlv' => false,
    ),
);

詳請參考 https://github.com/roundcube/roundcubemail/wiki/Configuration:-LDAP-Address-Books#prerequisites

1 ... 35 36 37 38 39 ... 75