2012/02/22

[ FBSD ] 最常用的兩個 SHELL 中文環境設定

使用 Pietty 最常用到,卻最常需要 Google,還是將它們做個筆記,最常用的兩個 SHELL 及 Vim 中文環境設定。

#vi etc/profile # for BASH
LC_CTYPE=en_US.ISO8859-1; export LC_CTYPE
LC_CTYPE=zh_TW.UTF-8; export LC_ALL
LANG=zh_TW.UTF-8; export LANG

#source /etc/profile # 立即生效

#vi etc/csh.cshrc # for CSH
setenv LC_CTYPE en_US.ISO8859-1
setenv LC_ALL zh_TW.UTF-8
setenv LANG zh_TW.UTF-8

# cd /usr/ports/editors/vim  # 安裝 vim 編輯器
# make -DWITHOUT_X11 install clean
# cd ~   #  切換到家目錄
# vi .vimrc     # for VIM
set enc=utf-8
set fenc=utf-8
set fileencodings=utf-8,ucs-bom,big5,latin1
set cindent
set hls
set nocompatible
set sw=2
set background=dark
set nomodeline
syntax on
highlight Comment ctermfg=darkcyan
highlight Search term=reverse ctermbg=4 ctermfg=7

2010/09/10

[ FBSD ] Find and delete all Thumbs.db files

Windows XP 在瀏覽網芳的開放資料夾時會自動產生圖檔的縮圖暫存檔 Thunbs.db,這個資料夾會因使用者的不同而建立擁有者權限,當使用者想刪除資料夾時就會被拒絕,解決方式如下:

1. 在 samba 中設定不允許 nt acl

# vi smb.conf
nt acl support = no

2. 手動刪除全部的 Thunbs.db

Unix/Linux 下操作:
# find /mnt/soft/ -name "Thunbs.db" -exec rm '{}' \;

Windows 下操作:
C:\del D:\Thumb.db /f /s /q /a      # D代表你的硬碟D槽

2010/09/07

[ FBSD ] FreeNAS mount WinXP folder by mount_smbfs

將 Windows XP上網芳協定所分享出來的資料夾掛載到 FreeBSD/FreeNAS 中,而要如何將它自動掛載起來?其設定方式如下:

(1) Windows XP 端


在使用者管理內新增一個測試使用者 USERA 密碼相同,同時將分享的資料夾 D:\Share 設定給 USERA 這個使用者,USERA擁有可讀寫的權限(WinXP資料夾設定預設為簡易,在資料夾選項>檢視中可勾選掉使用簡易檔案共用)。

(2) FreeBSD/FreeNAS 端

# mkdir /mnt/win     # 建立一個欲掛載使用的資料夾取名為 win

# vi /etc/nsmb.conf     # 編寫自動掛載資訊用於主要是除去互動式密碼輸入

[default]
workgroup=WORKGROUP

[SERVER-NAME]
addr=10.10.10.6

[SERVER-NAME:USERA]
password=USERA

# vi /etc/rc.d/smb_mount     #  編寫開機執行檔,讓開機自動掛載 windows 網芳

#!/bin/csh
# 參數:-I 為指定主機名稱或IP、-N 則為不要詢問密碼
mount_smbfs -I 10.10.10.6 -N //USERA@SERVER-NAME/Share /mnt/win

# chmod 755 /etc/rc.d/smb_mount    # 改變為可執行權限

# mount_smbfs -I 10.10.10.6 -N //USERA@SERVER-NAME/Share  /mnt/win     # 手動掛載

# df   # 查看掛載資訊
Filesystem              1K-blocks      Used     Avail Capacity  Mounted on
/dev/ad0s1a               1008590     94828    833076    10%    /
devfs                           1         1         0   100%    /dev
procfs                          4         4         0   100%    /proc
//USERA@SERVER-NAME/SHARE 385977656 226092876 159884780    59%    /mnt/win

# umount  //USERA@SERVER-NAME/SHARE   # 手動卸載


Ref:
http://www.unix.com/man-page/FreeBSD/8/mount_smbfs/
http://static.closedsrc.org/articles/dn-articles/backingUpFreeBSD.html

2010/04/30

[ LOS ] Set Up Software RAID1 On CentOS Linux

這是在 CentOS Linux上的 SoftRAID 設定方式,比起FreeBSD稍微覆雜些,原系統主硬碟安裝時parttion是沒有使用LVM(Logical Volume Manager)而是直接採用etx3格式,下面紀錄了 SoftRAID1 的安裝過程。

# fdisk  -l   # 查看系統上的磁區,總共兩顆 hda 及 hdb

Disk /dev/hda: 20.5 GB, 20547841536 bytes
255 heads, 63 sectors/track, 2498 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          16      128488+  83  Linux
/dev/hda2              17         147     1052257+  82  Linux swap / Solaris
/dev/hda3             148        2498    18884407+  83  Linux

Disk /dev/hdb: 20.5 GB, 20547841536 bytes
16 heads, 63 sectors/track, 39813 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System

# yum install mkinitrd mdadm     # 安裝 softraid 管理軟體

# modprobe linear     # 載入 raid 的 kernel modules(先別重開機)
# modprobe multipath
# modprobe raid0
# modprobe raid1
# modprobe raid5
# modprobe raid6
# modprobe raid10


# sfdisk -d /dev/hda | sfdisk /dev/hdb --force     # 將第一顆硬碟 hda 的 parttion 複製到 hdb

# fdisk -l     # 查看磁區資訊

Disk /dev/hda: 20.5 GB, 20547841536 bytes
255 heads, 63 sectors/track, 2498 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          16      128488+  83  Linux
/dev/hda2              17         147     1052257+  82  Linux swap / Solaris
/dev/hda3             148        2498    18884407+  83  Linux

Disk /dev/hdb: 20.5 GB, 20547841536 bytes
16 heads, 63 sectors/track, 39813 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1   *           1         255      128488+  83  Linux
/dev/hdb2             256        2343     1052257+  82  Linux swap / Solaris
/dev/hdb3            2343       39812    18884407+  83  Linux

# fdisk /dev/hdb    # 對第二棵硬碟進行parttion規劃

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

# mdadm --zero-superblock /dev/hdb1
# mdadm --zero-superblock /dev/hdb2
# mdadm --zero-superblock /dev/hdb3


# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/hdb1
# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/hdb2
# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/hdb3

# cat /proc/mdstat    # 查看資訊 hdb 這顆硬碟已經加入 md RAID 中
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 hdb3[1]
      18884288 blocks [2/1] [_U]

md1 : active raid1 hdb2[1]
      1052160 blocks [2/1] [_U]

md0 : active raid1 hdb1[1]
      128384 blocks [2/1] [_U]

unused devices:

# mkfs.ext3 /dev/md0    # 格式化
# mkfs.ext3 /dev/md2
# mkswap /dev/md1


# mdadm --examine --scan >> /etc/mdadm.conf     # RAID的文件配置
# cat /etc/mdadm.conf    # 查看raid設定檔
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=99f34a09:5928203e:48d5bb08:74e32d59
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=1e1f6fdc:c7ccbdf0:ef6ede01:cea22d9e
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=c3db9ae6:23891592:55838167:40aa1172

# mkdir /mnt/md0    # 建立資料夾
# mkdir /mnt/md2
# mount /dev/md0 /mnt/md0   # 掛載 md
# mount /dev/md2 /mnt/md2

# mount     # 查看掛載資訊
/dev/hda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
/dev/md2 on /mnt/md2 type ext3 (rw)

# vi /etc/fstab     # 編輯  fstab 檔
/dev/md2                /                       ext3    defaults        1 1
/dev/md0                /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/md1                swap                    swap    defaults        0 0

# vi /etc/mtab     # 編輯 mtab 檔
/dev/md2 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
#/dev/md0 /mnt/md0 ext3 rw 0 0
#/dev/md2 /mnt/md2 ext3 rw 0 0

# vi /boot/grub/menu.lst   # 在 default=0 之後加入 fallback=1 同時將hd0改hd1以及修改root為/dev/md2
default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-164.el5-raid.img

# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig  #備份
# mkinitrd /boot/initrd-`uname -r`.img `uname -r`   # 將 Software RAID Module 載入 initrd.img

# cp -dpRx / /mnt/md2   # 將第一顆硬碟裡的資料全數複製到第二顆硬碟
# cd /boot    # 切換目錄
# cp -dpRx . /mnt/md0   # 將第一顆硬碟裡的boot複製到第二顆硬碟

# grub    # 修改開機設定檔

    grub>root (hd0,0)
    grub>setup (hd0)
    grub>root (hd1,0)
    grub>setup (hd1)
    grub>quit


# quit
# reboot

# df -h
檔案系統              容量  已用 可用 已用% 掛載點
/dev/md2               18G  1.3G   16G   8% /
/dev/md0              122M   14M  102M  12% /boot
tmpfs                 252M     0  252M   0% /dev/shm

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdb1[1]
      128384 blocks [2/1] [_U]

md1 : active raid1 hdb2[1]
      1052160 blocks [2/1] [_U]

md2 : active raid1 hdb3[1]
      18884288 blocks [2/1] [_U]

# fdisk /dev/hda   # 規劃 parttion 為 fd(Linux raid auto)格式

# mdadm --add /dev/md0 /dev/hda1    # 新增加 Parttion 到 md 軟體RAID中
# mdadm --add /dev/md1 /dev/hda2
# mdadm --add /dev/md2 /dev/hda3


# cat /proc/mdstat   # 查看兩個UU表示兩顆硬碟都ok ===> 為同步進度
Personalities : [raid1]
md0 : active raid1 hda1[0] hdb1[1]
      128384 blocks [2/2] [UU]

md1 : active raid1 hda2[2] hdb2[1]
      1052160 blocks [2/1] [_U]
      [====>................]  recovery = 24.6% (259456/1052160) finish=0.6min speed=21621K/sec

md2 : active raid1 hda3[2] hdb3[1]
      18884288 blocks [2/1] [_U]
        resync=DELAYED

unused devices:

# watch cat /proc/mdstat  # 即時查看同步進度

# vi /boot/grub/menu.lst   # 修改 menu.lst 增加一筆 hd0

default=0
fallback=1
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-164.el5.img

title CentOS (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/md2
        initrd /initrd-2.6.18-164.el5.img

# mdadm --examine --scan > /etc/mdadm.conf   # 完成同步後再進行第二次掃描建立 mdadm.conf 檔
# mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2   # 備份
# mkinitrd /boot/initrd-`uname -r`.img `uname -r`   # 將 Software RAID Module 載入 initrd.img

# reboot 

※ 模擬狀況測試

1. 下指令模擬摘除某個parttion再重新掛回:

# mdadm --manage /dev/md0 --fail /dev/hdb1 --remove /dev/hdb1   # 移除第二顆硬碟hdb的第一個parttion
# mdadm --add /dev/md0 /dev/hdb1   # 重新加入 hdb1 要下指令 sync
# cat /proc/mdstat   # 觀察是否正在進行 sync 動做
       
2. 實際關機後摘除其中一顆硬碟,開機一樣可以正常運作,接著再關機重新插回硬碟,開機後執行:
       
# cat /proc/mdstat  # 查看
# mdadm --add /dev/md0 /dev/hda1    # 必須手動將 parttion 重新加到 md0
# mdadm --add /dev/md1 /dev/hda2    # 必須手動將 parttion 重新加到 md1
# mdadm --add /dev/md2 /dev/hda3    # 必須手動將 parttion 重新加到 md2
# cat /proc/mdstat # 可看到系統正在進行 sync
       
3. 關機後實際摘除其中一顆硬碟(hdb),以另一顆全新硬碟取代(新硬碟當第二顆),開機後執行:

# sfdisk -d /dev/hda | sfdisk /dev/hdb
# mdadm --add /dev/md0 /dev/hdb1
# mdadm --add /dev/md1 /dev/hdb2

# cat /proc/mdstat  # 靜候 sync 作業完成

※ 監控管理

# mdadm --monitor --scan --mail= your-email@address.com  /dev/md0 -t -1 #手動測試監控發信通知
# crontab -e  # 加入 crontab 每隔一段時間監控發信通知
*/5   *    *    *    *    /sbin/mdadm --monitor --scan --mail= your-email@address.com /dev/md0 -1

Ref.
http://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub-configuration-centos-5.3

2010/04/28

[ LOS ] Install eGroupware On CentOS Linux

這是在 CentOS 5.4 中安裝 eGroupware-1.6.003-2 的過程同時修改甘特圖中文亂碼問題,做個紀錄方便以後有用到可參考。

# /etc/rc.d/init.d/sendmail stop    # 關閉原本的MTA
正在關閉 sm-client:                                        [  確定  ]
正在關閉 sendmail:                                         [  確定  ]

# yum -y install postfix dovecot   # 安裝25port及143port的 e-mail 服務

# vi /etc/postfix/main.cf    # 設定 postfix 主設定檔
myhostname = mail.ntut.idv.tw
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, ntut.idv.tw
mynetworks = 127.0.0.0/8, 10.88.88.0/24
home_mailbox = Maildir/

# /etc/init.d/postfix start   # 啟動 postfix
正在啟動 postfix:                                          [  確定  ]

# alternatives --config mta    # 修改主要 MTA
有 2 程式提供 'mta'。

  選擇        指令
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

請輸入以保留目前的選擇[+],或輸入選擇號碼:2

# vi /etc/dovecot.conf    # 開啟 imap 及 pop3
protocols = imap pop3
mail_location = maildir:~/Maildir

# chkconfig postfix on   # 設定開機啟動 postfix
# chkconfig dovecot on    # 設定開機啟動 dovecot
# /etc/init.d/dovecot start  # 手動啟動 dovecot
正在啟動 Dovecot Imap:                                     [  確定  ]

# yum -y install httpd mysql-server php php-mysql php-mbstring php-imap php-gd php-pear cron   # 安裝相關軟體

# /etc/init.d/mysqld start   # 啟動 mysql-server
正在啟動 httpd:                                            [  確定  ]

# mysql -p   # 建立 mysql DB 和 User
mysql> CREATE DATABASE egroupware;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON egroupware.* TO egroupware@localhost IDENTIFIED BY 'Password';
Query OK, 0 rows affected (0.01 sec)
mysql> exit

# /etc/init.d/httpd start    # 啟動 apache
正在啟動 httpd:                                            [  確定  ]

# chkconfig httpd on   # 設定開機自動啟動 httpd
# chkconfig mysqld on    # 設定開機自動啟動 mysql

# cd /var/www/html/   # 切換目錄
# wget http://sourceforge.net/projects/egroupware/files/egroupware/eGroupware-1.6.003-2/eGroupware-1.6.003-2.tar.gz/download
# wget http://sourceforge.net/projects/egroupware/files/egroupware/eGroupware-1.6.003-2/eGroupware-egw-pear-1.6.003-2.tar.gz/download   # 這個套件是FelaMiMail要用的
# tar -xzvf eGroupware-1.6.003-2.tar.gz
# tar -xzvf eGroupware-egw-pear-1.6.003-2.tar.gz
# chown -R apache:apache egroupware

# vi /etc/php.ini   # 檢查 php 設定檔
display_errors = Off
memory_limit = 32M
file_uploads = On
mbstring.func_overload = 7

# /etc/init.d/httpd restart   # 重新啟動 apache

http://10.88.88.88/egroupware/setup/   # 開個瀏覽器開始檢查所缺的軟體

# pear install Auth_SASL   # 加裝 egroupware 所需要的 pear 套件
# pear install Net_IMAP
# pear install Net_Sieve
# pear install channel://pear.php.net/HTTP_WebDAV_Server-1.0.0RC4
# pear install Log


# mkdir -p /var/lib/egroupware/default/files   # 建立 egroupware 資料 files 目錄
# mkdir -p /var/lib/egroupware/default/backup   # 建立 egroupware 資料 backup 目錄
# chown -R apache:apache /var/lib/egroupware/default/files
# chown -R apache:apache /var/lib/egroupware/default/backup


# cd /var/www/html   # 切換到egroupware的相同目錄安裝甘特圖所需套件
# wget http://hem.bredband.net/jpgraph2/jpgraph-3.0.7.tar.bz2
# tar jxvf jpgraph-3.0.7.tar.bz2 /var/www/html/jpgraph  # 將 jpgraph-3.0.7.tar.bz2,解壓縮到 /var/www/html 下
# chown -R apache:apache jpgraph  # 更改權限

# wget http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz  # 下載字型
# tar -xzvf fireflysung-1.3.0.tar.gz
# cd fireflysung
# cp fireflysung.ttf /usr/share/fonts/chinese/TrueType/
# cd /var/www/html/egroupware/projectmanager/inc/ttf-bitstream-vera-1.10
# ln /usr/share/fonts/chinese/TrueType/fireflysung.ttf


# vi /var/www/html/jpgraph/src/jpgraph_ttf.inc.php  # 修改甘特圖中文亂碼問題
 
// 找到下面整段Mark起來
//  elseif( $aFF === FF_BIG5 ) {
//      if( !function_exists('iconv') ) {
//          JpGraphError::RaiseL(25006);
//          ('Usage of FF_CHINESE (FF_BIG5) font family requires that your PHP setup has the iconv() function. By default this is not compiled into PHP (needs the "--width-iconv" when configured).');
//      }
//      return iconv('BIG5','UTF-8',$aTxt);
//  }

// 將 bkai00mp.ttf 改 fireflysung.ttf
//define('CHINESE_TTF_FONT','bkai00mp.ttf');
define('CHINESE_TTF_FONT','fireflysung.ttf');

// 將 FF_CHINESE 改成下面樣子
// 原本
// FF_CHINESE  =>   array(
//    FS_NORMAL =>CHINESE_TTF_FONT,
//    FS_BOLD =>' ',
//    FS_ITALIC =>' ',
//    FS_BOLDITALIC =>' ' ),
// 修改後
FF_CHINESE  =>   array(
    FS_NORMAL =>CHINESE_TTF_FONT,
    FS_BOLD =>CHINESE_TTF_FONT,
    FS_ITALIC =>CHINESE_TTF_FONT,
    FS_BOLDITALIC =>CHINESE_TTF_FONT ),

# cd /var/www/html/egroupware/projectmanager/inc/
# vi class.projectmanager_ganttchart.inc.php  # 修改下面
// 將 gantt_char_encode 這行 Mark 起來
//if ($this->gantt_char_encode) $text = preg_replace('/[^\x00-\x7F]/e', '"&#".ord("$0").";"',$text);

//甘特圖中日期中文亂碼問題解決,將 setlocale() 這行 Mark 起來
//$graph->scale->SetDateLocale(common::setlocale());

專案管理員 >> 網站設定 >> 字型>>選(chinese(Chinese)) >> 字型字集>>改utf-8  # 更改設定

Ref
http://www.egroupware.org/
http://www.ihao.org/dz5/viewthread.php?tid=259
http://twpug.net/modules/newbb/viewtopic.php?topic_id=2877

Add︰

帳號、密碼有誤時,表示你的 IMAP 與 egroupware 的帳號、密碼不一致,可以到 FelaMiMail 的喜好設定中調整。

1. 系統管理 >> emailadmin(編輯)啟用 >> (登出再登入)
2. emailadmin >> 點選 default profile (created by setup) >> 勾選(使用者可以自行定義郵件帳號)後儲存
3. FelaMiMail >> Manage eMail Accounts and Identities  >> 新增 >> 填寫IMAP欄位設定即 ok

2010/04/19

[ LOS ] CentOS Update ClamAV Amavisd-new Spamassassin

這陣子 Linux 中的 Mail Gateway 遇到這樣的問題︰ (一) ClamAV 0.95 之前的版本無法更新病毒碼,手動將原本的 ClamAV 升級到 0.96同時重建 Virus DB 。(二) amavisd-new 中介軟體中產生大量的暫存檔讓 amavisd 無法正常過濾病毒,造成大量的 Mail 被 Queue 住,解決方式手動砍掉/var/amavis/ tmp下的所有暫存檔接著再升級 amavisd-new 軟體 。

(一)  ClamAV

# cat /var/log/clamav/clamd.log  # 第一個問題查到本機 clamav 的 log 病毒無法更新
Sat Apr 17 01:05:06 2010 -> Reading databases from /var/clamav
Sat Apr 17 01:05:07 2010 -> ERROR: reload db failed: Malformed database
Sat Apr 17 01:05:07 2010 -> Terminating because of a fatal error.
Sat Apr 17 01:05:07 2010 -> Socket file removed.
Sat Apr 17 01:05:07 2010 -> Pid file removed.
Sat Apr 17 01:05:07 2010 -> --- Stopped at Sat Apr 17 01:05:07 2010

# rm -rf /var/clamav/*  # 刪除 Virus DB
# /etc/init.d/clamd stop   # 暫停 Service
# yum update clamav  # 使用 yum 手動 update clamav
# freshclam  #  更新 Virus DB

# /etc/init.d/clamd start   # 重新啟動 clamav  


(二) Amavisd-new / SpamAssassin

# cd /var/amavis/   # 查到第二個問題 amavis 中的 tmp 暫存檔過多3萬8千個導致Mail無法過濾
# ls -l   
總計 16
-rw-r-----  1 amavis amavis    0  4月 19 14:53 amavisd.lock
-rw-r-----  1 amavis amavis    5  4月 19 13:46 amavisd.pid
srwxr-x---  1 amavis amavis    0  4月 19 13:46 amavisd.sock
drwxr-x---  2 amavis amavis 4096  4月 19 13:46 db
drwxr-x--- 38000 amavis amavis 4096  4月 19 14:57 tmp
drwxr-x---  2 amavis amavis 4096  7月 19  2009 var

# rm -rf /var/amavis/tmp/*    # 手動刪掉 tmp 所有檔案
# /etc/init.d/amavisd stop   # 暫停 Service
# /etc/init.d/spamassassin stop   # 暫停 Service

# yum update clamd amavisd-new spamassassin    # 手動將所有套件升級

# /etc/init.d/clamd start     # 重新啟動 clamav
Starting Clam AntiVirus Daemon:                            [  確定  ]

# /etc/init.d/amavisd start    # 重新啟動 amavisd 失敗
正在啟動 Mail Virus Scanner (amavisd):                     [  失敗 ]

# amavisd debug     # 失敗所以用 debug 模式查問題,錯誤訊息說要執行 sa-update
Apr 19 14:38:52.391 ntut.idv.tw /usr/sbin/amavisd[6795]: (!!)TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run 'sa-update'?
Suicide () TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run 'sa-update'?

# sa-update   # 手動執行 sa-update

# /etc/init.d/amavisd start   # 再次啟動 amavisd 成功 !
正在啟動 Mail Virus Scanner (amavisd):                     [  確定  ]

# /etc/init.d/spamassassin start    # 啟動 spamassassin
正在啟動 spamd:                                            [  確定  ]

# /etc/init.d/postfix restart    # 重新啟動 postfix
正在關閉 postfix:                                          [  確定  ]
正在啟動 postfix:                                          [  確定  ]

# netstat -nat |grep LISTEN     # 查看 service 是否啟動  port 10024,10025,783,25
tcp        0      0 127.0.0.1:10024             0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:10025             0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:783               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN

# telnet 127.0.0.1 10024      # 手動測試
Trying 127.0.0.1...
Connected to ntut.idv.tw (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
MAIL FROM: < bob@ntut.idv.tw >
250 2.1.0 Sender OK
RCPT TO: < tetralet >
250 2.1.5 Recipient OK
DATA
354 End data with .
Subject:Virus Test Pattern

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

.
250 2.0.0 Ok, id=06865-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as AEF07A0035
quit
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Connection closed by foreign host.

# amavisd -V   # 查看升級之後軟體的版本
amavisd-new-2.6.4 (20090625)
# clamd -V
ClamAV 0.96/10757/Mon Apr 19 10:29:28 2010
# spamassassin -V
SpamAssassin version 3.3.1
  running on Perl version 5.8.8

# postsuper -r ALL   # 手動強迫送出 Queue 住的 Mail

2010/03/29

[ FBSD ] FreeBSD Soft Raid1 by Gmirror

軟體RAID還是硬體RAID好呢?這要端看所使用的地方以及其用途,我個人覺得想省錢的中小企業就蠻適合採用軟體Raid機智,軟體Raid的優點是在於免花錢購買Raid卡也因此就沒有Raid卡掛點的擔優,而硬體Raid卡若掛點恐怕重要資料要救援就麻煩。軟體Raid也有缺點它會損耗CPU的運算資源,因此其效能會比較差些所以比較適合想省錢又不需要高效能的環境。我個人比較偏愛軟體Raid,雖然它犧牲掉一些CPU資源但對系統管理者來說往後的維護也較能自行掌握。FreeBSD 是一套設計相當優良的OS它所納入的軟體Raid相當穩定同時也非常便利使用,下面紀錄了如何在FreeBSD中使用 gmirror 建立軟體Raid 1格式的FreeBSD開機系統。


1. 建立第一顆HD為 Raid-1 mirror 型態

※ 安裝完 FreeBSD 後先別重開機按 Alt + F4 便可進入 commend mode 下。

# csh       #  接著給個 C SHELL

# sysctl kern.geom.debugflags=17    # 設 17 才能將 Metadata 寫入 ad0
kern.geom.debugflags: 0 -> 17

# gmirror label -v -b round-robin gm0 /dev/ad0    # 建立 gm0 同時寫入 Metadata

# echo geom_mirror_load="YES" > /boot/loader.conf    # 建立開機立即載入 /boot/kernel/geom_mirror.ko

# cp /etc/fstab /etc/fstab.orig   # 備份原本 fstab
# vi /etc/fstab    # 將所有 ad 改為 gm 同時添加 mirror 修改後如下
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b              none            swap    sw              0       0
/dev/mirror/gm0s1a              /               ufs     rw              1       1
/dev/mirror/gm0s1d              /home           ufs     rw              2       2

# reboot   # 重開機

# mount   # 查看掛載的 HD
/dev/mirror/gm0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/mirror/gm0s1d on /home (ufs, local, soft-updates)


2. 插入第二顆 HD ad1 到 gm0 中

# gmirror forget gm0   # 忽略 gm0 中沒有連線的實體裝置
# gmirror insert gm0 /dev/ad1   # 將新的硬碟(eg. ad0) 加入 gm0

# gmirror status   # 剛 insert 新硬碟時會顯示 DEGRADED 因為還在同步,同步完成後顯示 COMPLETE
      Name    Status  Components
mirror/gm0  DEGRADED  ad0
                      ad1 (4%)

# gmirror list    # ad1 的 Flags: 會 SYNCHRONIZING 一段時間要看硬碟大小決定
Geom name: gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2949628385
Providers:
1. Name: mirror/gm0
   Mediasize: 20546759168 (19G)
   Sectorsize: 512
   Mode: r4w3e8
Consumers:
1. Name: ad0
   Mediasize: 20546759680 (19G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: NONE
   GenID: 0
   SyncID: 1
   ID: 2966051479
2. Name: ad1
   Mediasize: 20547841536 (19G)
   Sectorsize: 512
   Mode: r1w1e1
   State: SYNCHRONIZING
   Priority: 0
   Flags: DIRTY, SYNCHRONIZING
   GenID: 0
   SyncID: 1
   Synchronized: 67%
   ID: 2490835271


3. 永久移除 gmirror 中的某顆 HD

# gmirror remove gm0 ad0  # 移除實體裝置(eg. ad0)
# gmirror status   # 查看狀態
      Name    Status  Components
mirror/gm0  COMPLETE  ad1

# gmirror list   # gm0 中只剩下 ad1,系統依然持續運作
Geom name: gm0
State: COMPLETE
Components: 1
Balance: round-robin
Slice: 4096
Flags: NONE
GenID: 0
SyncID: 1
ID: 2949628385
Providers:
1. Name: mirror/gm0
   Mediasize: 20546759168 (19G)
   Sectorsize: 512
   Mode: r3w3e8
Consumers:
1. Name: ad1
   Mediasize: 20547841536 (19G)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Priority: 0
   Flags: DIRTY
   GenID: 0
   SyncID: 1
   ID: 2490835271


4. 永久清除某個 gmirror 的設定

# gmirror stop -v gm0   # 停止 gmirror 運作

# gmirror clear -v ad0 ad1    # 清除實體硬碟上 gmirror 的 Metadata (Metadata 存在硬碟的最後一個 sector , 清除該 gmirror 的設定,而原本在 gmirror 上的資料並不會被消除,還是會存在於ad0跟ad1上面。)


Reference:
http://www.freebsd.org/doc/handbook/geom-mirror.html
http://onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html