2012年11月9日 星期五

mailbox to maildir





mailbox 與 maildir 格式不多做說明


所需套件
mb2md

安裝方式:
yum -y install mb2md

建立執行檔: 
vim /usr/local/bin/allmb2md
內容:
#!/bin/sh
MBOXDIR="/var/spool/mail"
cd $MBOXDIR
for user in *; do
  MAILDIR="/home/$user/Maildir"
  mkdir -p $MAILDIR/
  echo  "user $user"
 
  mb2md -s $MBOXDIR/$user -d $MAILDIR/
  chmod -R 700 $MAILDIR/
  chown -R $user $MAILDIR/
done
變更為可執行:
chmod +x /usr/local/bin/allmb2md
執行:
allmb2md
注意事項:
MAILDIR="/home/$user/Maildir"
會這樣設定,是因為在dovecot 內有做
mail_location = maildir:~/Maildir的設定。

2012年10月22日 星期一

postfix 查看、刪除佇列郵件

參考官方說明:http://www.postfix.org/postqueue.1.html

POSTQUEUE(1)                                                      POSTQUEUE(1)

NAME
       postqueue - Postfix queue control

SYNOPSIS
       postqueue [-v] [-c config_dir] -f
       postqueue [-v] [-c config_dir] -i queue_id
       postqueue [-v] [-c config_dir] -p
       postqueue [-v] [-c config_dir] -s site

--以下略--


官方上面只有這些參數,但是網路上一堆轉貼都是說

看被Queue的信:
postqueue -q
強迫將Queue信寄出:
postqueue -f
刪除所有被Queue的信:
postsuper -d ALL
刪除某封Queue的信:
postsuper -d queue_id
刪除所有正在 deferred 佇列中的郵件 ( 刪除曾經發送失敗的信 ):
postsuper -d ALL deferred
是版本的問題嗎?

不管他...

從 postfix 官方說明:http://www.postfix.org/qmgr.8.html
可查到佇列相關資訊。

另外也有人整理好相關資訊:

※ Mail Queue 所在的目錄 
/var/spool/mqueue
/var/spool/postfix -- 底下列出 postfix 的子目錄

 》active
  目前正在準備發送的信件。(在 message id 後會多加一個 * 號)
Messages  that  the  queue  manager  has opened for delivery. Only a  limited  number  of  messages  is allowed  to  enter  the  active queue (leaky bucket strategy, for a fixed delivery rate).

 》bounce
  每一位收件者的傳送狀態,並記載為何會被退信
Per-recipient status information about why mail  is bounced.    These   files  are  maintained  by  the bounce(8) daemon.

 》corrupt
  信件損毀導致無法傳送的信件
Unreadable  or  damaged  queue files are moved here for inspection.
 》defer
   暫時無法被傳送的信件,並記載為何會被延遲傳送。這種情形最常發生在你的 Mail Server 被列入灰名單(GrayList)的時候,你會看到訊息為「 Your access to this mail system has been rejected due to the sending MTA's poor reputation. If you believe that this failure is in error, please contact the intended recipient via alternate means.」
Per-recipient status information about why mail  is delayed. These files are maintained by the defer(8) daemon.

 》deferred
  無法被傳送的信件會放置在此目錄,但 Mail Server 還是會嘗試幫你繼續送,只是必須等 Backoff time。
Mail that could not be  delivered  upon  the  first attempt.  The  queue manager implements exponential backoff  by  doubling  the  time  between  delivery attempts.

 》hold
  被暫時停止發送的信件,如要發送出去,需要由手動(在 message id 後會多加一個 ! 號)
Messages that are kept  "on  hold"  are  kept  here until someone sets them free.

 》incoming
  從外部或本地寄送到本機的信件。
Inbound mail from the network, or mail picked up by the local pickup(8) daemon from the maildrop directory.
 知道這些就好辦了,直接到相對應的資料夾把信刪掉即可。


參考:Postfix Mail Queue - 一些簡單的管理指令





2012年10月18日 星期四

FreeBSD 帳號密碼移轉至 linux


FreeBSD的帳號密碼及其他資訊都存在master.passwd,Linux則分別存在passwd及shadow中。
master.passwd@FreeBSD
帳號:密碼:UID:GID:Login Class:Change:Expire:Full Name:家目錄:Login SHELL
  • Login Class:幾乎沒在用了,通常是空的
  • Change:強迫使用者改密碼的時間週期, 0 表示不設定
  • Expire:使用者帳號的使用期限, 0 表示不設定
passwd@Linux
帳號:密碼:UID:GID:Full Name:家目錄:Login SHELL
FreeBSD比Linux多了三個欄位
所以我們將那三個欄位捨棄,並把密碼那欄設為x,因為Linux的密碼是存在shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf"%s:x:%s:%s:%s:%s:%s\n",$1,$3,$4,$8,$9,$10}' > passwd.linux


shadow@Linux
帳號:密碼:3:4:5:6:7:8:9
  • 3.last password change
  • 4.days until change allowed
  • 5.days before change required
  • 6.days warning for expiration
  • 7.days before account inactive
  • 8.date when account expires
  • 9.reserved for future use
接著處理shadow
cat master.passwd.bsd | awk -F":" '$3>=1002&&$3<=60000{printf "%s:%s:13367:0:99999:7:::\n",$1,$2 }' > shadow.linux

再來處理group
cat group.bsd | awk -F":" '$3 >=1002&&$3<=60000{printf "%s::%s:%s\n",$1,$3,$4 }' > group.linux

接著把他們附加到原本的檔案後面
cat shadow.linux >> /etc/shadow
cat passwd.linux >> /etc/passwd
cat group.linux >> /etc/group



home、mail的移轉只需要用tar將資料夾打包即可。

如果不移轉home的資料,但是需要建立user home,寫迴圈來建立。
cd /tmp
vim create_user_home.sh
#!/usr/bin/ksh
for users in `awk -F: '{print $1}' passwd.linux`
do
mkdir /home/$users
chown $users:
$users /home/$users
chmod 700
done
執行sh
./create_user_home.sh




註:$3 >=1002  的部份是uid,需按照系統預設起始值修改


參考:
http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/Linux2FreeBSD.html
[轉錄] FreeBSD帳號密碼轉移至Linux

2012年10月8日 星期一

ssh斷線後,利用screen套件恢復被中斷的作業


參考來源:

使用 GNU Screen 回復被中斷的遠端存取作業階段
SSH 斷線了怎麼辦?沒關係,還有 Screen 幫你保留! 


套件:
screen

使用:

#screen 開啟一個新的作業階段,如果連線中斷,此作業階段依舊會被保留住。

檢視工作階段列表:
$ screen -ls
There are screens on:
        13454.pts-2.mail        (Attached)
        13670.pts-4.mail        (Detached)
2 Sockets in /var/run/screen/S-zongyan..

其中,13670.pts-4.mail        (Detached)代表中斷的作業階段。
 復原作業階段:
#screen -r [作業階段識別號]
例如:
#screen -r 13670.pts-4.mail
切換到Attached的作業階段:
#screen -d -r [作業階段識別號]
例如:
#screen -d -r 13454.pts-2.mail
離開作業階段方式:
#exit

2012年10月3日 星期三

CentOS 6.3 + dovecot + postfix + SquirrelMail

起因:
目前公司mail架構為 freebsd + postfix +openwebmail (mailbox)
mailbox的最大缺點就是在於鎖定的問題,隨著公司人數上升,問題的發生率就越來越頻繁
對客服單位(信件量大、即時處理)發生的機率更大。
於是幫客服部門另外架設一台備份、線上查詢用的mail server
這台mail server改用maildir的架構,將每封信單獨成一個檔案存放,雖然效能下降,但是能有效解決lock的問題。

環境:
由於機器的raid驅動問題,freebsd在安裝時便無法抓到硬碟,freebsd官方的硬體支援列表也沒列出該raid晶片(要裝也是可以,不過太費工了),故改用CentOS
搭配套件:
dovecot(imap、pop3)
postfix (smtp)
SquirrelMail  (webmail)
httpd (apache)
php

安裝方式:
一切以最簡單的yum安裝

  1. 安裝dovecot

    • yum install dovecot

    • 修改設定檔
      vi /etc/dovecot/dovecot.conf

      將protocols設為imap
      protocols = imap

    • 修改mail存放位置
      vi /etc/dovecot/conf.d/10-mail.conf

      mail_location = maildir:~/Maildir
       
    • 修改認證
      vi /etc/dovecot/conf.d/10-auth.conf
      disable_plaintext_auth = no
       
  2. postfix (系統內建,centos安裝時要選擇 basic server)
    • vi /etc/postfix/main.cf
    • inet_interfaces = localhost 這行前面加上 #號註解
       
    • 設定domain、host
      myhostname = (自行帶入)
      mydomain =
      (自行帶入)
     
  3. 安裝httpd、php(不贅述)
     
  4. 安裝SquirrelMail
    SquirrelMail目前在centos6.3的yum上面找不到,
    於是我到http://rpmfind.net/尋找
    找到 squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 抓取rpm
      wget ftp://rpmfind.net/linux/centos/5.8/updates/x86_64/RPMS/squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm

    • 安裝
      rpm -i squirrelmail-1.4.8-5.el5.centos.13.noarch.rpm
      如果有跳出有相依性套件,再依說明安裝所需套件

    • 環境設定
      cd /usr/share/squirrelmail/config/

      ./conf.pl

      進入設定介面 

      D
      輸入 dovecot
       
    • 設定語系,選 10
      squirrelmail_default_language = 'zh_TW';
      default_charset       = 'big5';

       
    • 其他的設定很明確,進去看一看就知道怎麼用了,基本上不用改,故不贅述。

    • 存檔 S,退出 Q
      
    • 新增change passwd plugins
      到官方網站:http://squirrelmail.org/plugin_view.php?id=117 下載適合的版本。
      (依照squirrelmail對應版本下載,筆者squirrelmail為1.4.8-5,可選擇Version 4.0,Requires: SquirrelMail 1.2.8, Compatibility plugin 1.3

      cd /usr/share/squirrelmail/plugins
       
      wget http://www.squirrelmail.org/plugins/change_passwd-4.0-1.2.8.tar.gz
       
      tar -zxvf change_passwd-4.0-1.2.8.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 change_passwd 加入模組 -> 選 S 儲存設定 -> 選 Q 後離開
       
    • 安裝 Compatibility plugin 1.3 SquirrelMail 官方plugins下載)官方網站:http://squirrelmail.org/plugin_view.php?id=152找1.3版
      cd /usr/share/squirrelmail/plugins/
        
      wget http://www.squirrelmail.org/plugins/compatibility-1.3.tar.gz
        
      tar -zxvf compatibility-1.3.tar.gz
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 Compatibility 加入模組 
      
      
    • 安裝 vacation(auto reply)套件
      官方網站:http://squirrelmail.org/plugin_view.php?id=172
      Requires: SquirrelMail 0.5 or above
      (需求說明的部份,官方網頁上漏掉2個需求。1.ftp server (直接yum安裝vsftp,不贅述)  2.vacation 程式)

      cd /usr/share/squirrelmail/plugins/
       
      wget http://www.squirrelmail.org/plugins/autorespond-0.5.1-1.4.tar.gz
       
      tar -zxvf autorespond-0.5.1-1.4.tar.gz 
       
      cd /usr/share/squirrelmail/config
       
      ./conf.pl
      
      # 選 8.  Plugins -> 將 Available Plugins: 內的 autorespond 加入模組 
      
      
    • 安裝 vacation 程式
      官方網站:http://www.csamuel.org/software/vacation
      直接抓最新版的來裝(目前為1.2.7.1)

      cd /tmp

      wget http://downloads.sourceforge.net/project/vacation/vacation/1.2.7.1/vacation-1.2.7.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvacation%2Ffiles%2Fvacation%2F1.2.7.1%2F&ts=1351066441&use_mirror=nchc

      tar -zxvf vacation-1.2.7.1.tar.gz

      cd vacation-1.2.7.1

      make


      執行make後會產生執行檔 vacation

      cp vacation /usr/bin




設定開機自動啟動:
chkconfig dovecot on
chkconfig httpd on
或是
ntsysv
進入services選擇
webmail網址:http://{host IP}/webmail

一開始登入時遇到
ERROR
Error connecting to IMAP server: localhost.
13 : Permission denied
這個錯誤訊息,找了老半天找不出結果,maillog也沒有紀錄,最後查到
setsebool httpd_can_network_connect=1
直接下這行就可解決。

檢測config狀況,可以瞭解SquirrelMail 哪邊出狀況
http://{host IP}/webmail/src/configtest.php

最後,我把seLinux關閉,他給我不少困擾....
vi /etc/selinux/config
SELINUX=disabled



reboot



參考:
http://blog.pmail.idv.tw/?p=363
http://www.wretch.cc/blog/jerry0822/13870081
http://www.fedoraforum.org/forum/archive/index.php/t-59291.html
http://www.ichiayi.com/wiki/tech/poppassd


更新日誌:
20121024
  • 更新change passwd模組安裝說明。原使用的模組需另外安裝poppassd server,但poppassd遇到密碼中有空白字元時會造成判斷錯誤。
  • 新增vacation(auto reply)安裝方式。


2012年9月10日 星期一

VMware View 安裝測試環境

上週將VMware View架設完畢,由於也是參考網路上教學文章,故不多加贅述安裝過程。

參考網址:
VMWare View基礎安裝
VMware View Administrator - Automated Pool 佈署

由於VMware View版本更新,部份介面有做新增、調整,但有基礎概念應該不是問題。


測試環境、架構:
 ESXi 5
 win2008 R2 64bit
XPP

測試環境、架構

在安裝過程中,遇到比較特別的是 composer的ODBC設定,如下圖。
 
這邊若將 帳號、密碼鍵入,按「NEXT」後則當機,屢試不爽!
但只鍵入ODBC名稱,則可正常執行!

2012年7月10日 星期二

FreeBSD網卡相關指令

原以為freebsd的網卡指令跟linux相同,
就在我要使用 ifdown 時,才發現根本沒這指令  orz
---

#ifconfig     //顯示網路卡相關資訊
#ifconfig vr0 down     //停用網路卡vr0
#ifconfig vr0 up     //啟用網路卡vr0
#/etc/rc.d/netif  restart     //重新啟動及載入網路卡相關設定

2012年5月8日 星期二

[轉] 設定 Crontab 指定收件人 或 不自動寄信

由於今天遇到freebsd內的排程一直在丟出訊息

由於主要負責人請休假,當下是先將該排程註解掉

等負責人回來後再討論要怎麼處理這隻程式造成的問題

討論過程就不註記了,
最後使用
http://blog.longwin.com.tw/2010/05/crontab-not-send-mail-mailto-2010/
這邊所描述的方法,將訊息處理掉

--

設定 Crontab 不自動寄信

設定不自動寄信的方法有三種:
  1. 指定收件人為空: MAILTO="" # 缺點是, 若有帳號會統一收信, 那個帳號還是會爆.
  2. 將輸出結果導去 /dev/null: >/dev/null 2>&1
  3. 將輸出結果導去 /dev/null: &> /dev/null

範例

  • */30 * * * *  /usr/bin/get_news.py &> /dev/null
  • */1 * * * *   flock -w 0 /tmp/xxx -c "/usr/bin/irc.py &" &>/dev/null 2>&1
  • */1 * * * *   flock -w 0 /tmp/mon -c "tail -5 /var/log/apache.log | /usr/bin/monweb.py" &> /dev/null

設定 Crontab 指定收件人

Crontab 的設定方式有兩種
  1. crontab -e
  2. vim /etc/crontab
於這兩種方式挑其一, 做下述設定即可:
  • 若要指定收件人, 只要於最上面寫 MAILTO="xxx@example.com" 即可. (把整個檔案當成一個 bash file 即可)
  • 同理也可以設定 PATH=/usr/bin ... 等.

--

另外,crontab -e 與 vi /etc/crontab 的差異如下:
crontab -e :使用者自訂之排程(包含root),故如果有訊息寄出會寄信通知該使用者。
/etc/crontab :為系統層級。


2012年4月26日 星期四

ERP 八大循環

 YAHOO 知識家

一般所謂ERP系統的八大循環是由 "公開發行公司建立內部控制制度處理準則"  第七條而來。
公開發行公司之內部控制制度應涵蓋所有營運活動,並應依企業所屬產業
特性以交易循環類型區分,訂定對下列循環之控制作業:
一、銷售及收款循環:包括訂單處理、授信管理、運送貨品或提供勞務、
    開立銷貨發票、開出帳單、記錄收入及應收帳款、銷貨折讓及銷貨退
    回、執行與記錄現金收入等之政策及程序。
二、採購及付款循環:包括請購、進貨或採購原料、物料、資產和勞務、
    處理採購單、經收貨品、檢驗品質、填寫驗收報告書或處理退貨、記
    錄供應商負債、核准付款、進貨折讓、執行與記錄現金付款等之政策
    及程序。
三、生產循環:包括擬訂生產計畫、開立用料清單、儲存材料、領料、投
    入生產、計算存貨生產成本、計算銷貨成本等之政策及程序。
四、薪工循環:包括僱用、請假、加班、辭退、訓練、退休、決定薪資率
    、計時、計算薪津總額、計算薪資稅及各項代扣款、設置薪資紀錄、
    支付薪資、考勤及考核等之政策及程序。
五、融資循環:包括借款、保證、承兌、租賃、發行公司債及其他有價證
    券等資金融通事項之授權、執行與記錄等之政策及程序。
六、固定資產循環:包括固定資產之取得、處分、維護、保管與記錄等之
    政策及程序。
七、投資循環:包括有價證券、不動產、衍生性商品及其他投資之決策、
    買賣、保管與記錄等之政策及程序。
八、研發循環:包括對基礎研究、產品設計、技術研發、產品試作與測試
    、研發記錄及文件保管等之政策及程序。
公開發行公司得視企業所屬產業特性,依實際營運活動自行調整必要之控
制作業。
 因為ERP為公司使用電腦化資訊系統作為內部控制工具之一,其涵蓋所有營業活動,ERP系統的八大循環亦即指上述八項

 =================
待補

2012年4月24日 星期二

利用newsyslog製作log循環備份

newsyslog 是安裝 freebsd 後就會有的套件,其主要功用是配合crontab排程,將log製作備份。

參考:
http://www.weithenn.org/cgi-bin/wiki.pl?newsyslog.conf
http://contest.ks.edu.tw/syshtml/freebsd-newsyslog.html

補充:
 
     ※要是我們要新加入的一些非預設的,程式(例如www)所產生的紀錄檔怎麼辦?
         /var/log/httpd-access.log         640    5    *    @T00     Z /var/run/httpd.pid 30
         /var/log/httpd-error.log          640    5    *    @T00     Z /var/run/httpd.pid 30
 
         第一欄是紀錄檔的位置, 第二欄是紀錄檔的權限 (mode),5 表示在硬碟
         內保留過去六次處理的紀錄(log.0.gz~ log.5.gz), 比六次還舊的紀錄
         就把他砍了。* 表示不管紀錄檔的大小。 @T00 表示每天零點零分的時候
         處理這個檔案,Z 表示把處理過的檔案壓縮起來, 節省空間。
         
   
     ※為什麼後面要加上/var/run/httpd.pid 30?
         因為 newsyslog 在系統 default 的 contable (/etc/crontab) 裡被預先
         設定為每一個小時啟動一次,然而在 newsyslog.conf 裡設定讓 apache log
         自動 rotate,不過發現 newsyslog 後接下來的 apache log 都不會寫入了,
         只留下一行 newsyslog[66253]: logfile turned over
         這個問題出在當 newsyslog rotate log之後,沒有送個 SIGHUP 給 apache,
         導致 apache的log 寫到不知道什麼地方去,所以要在 newsyslog.conf 裡面
         有關 httpd-access.log 及 httpd-error.log 的部份後面加上要 KILL -HUP
         的 pid 檔,才能正常運作。 
 
==== 20120425 ====

為什麼httpd.pid的sig_num 要設定為30? 不能設定其他值嗎?


 
hwakeye  在下面有作解釋
===== 
 
 
flags   This optional field is made up of one or more characters that
             specify any special processing to be done for the log files
             matched by this line.  The following are valid flags:

             B       indicates that the log file is a binary file, or has some
                     special format.  Usually newsyslog(8) inserts an ASCII
                     message into a log file during rotation.  This message is
                     used to indicate when, and sometimes why the log file was
                     rotated.  If B is specified, then that informational mes-
                     sage will not be inserted into the log file.

             C       indicates that the log file should be created if it does
                     not already exist, and if the -C option was also speci-
                     fied on the command line.

             D       indicates that newsyslog(8) should set the UF_NODUMP flag
                     when creating a new version of this log file.  This
                     option would affect how the dump(8) command treats the
                     log file when making a file system backup.

             G       indicates that the specified logfile_name is a shell pat-
                     tern, and that newsyslog(8) should archive all filenames
                     matching that pattern using the other options on this
                     line.  See glob(3) for details on syntax and matching
                     rules.

             J       indicates that newsyslog(8) should attempt to save disk
                     space by compressing the rotated log file using bzip2(1).

             N       indicates that there is no process which needs to be sig-
                     naled when this log file is rotated.

             U       indicates that the file specified by path_to_pid_file
                     will contain the ID for a process group instead of a
                     process.  This option also requires that the first line
                     in that file be a negative value to distinguish it from a
                     process ID.

             Z       indicates that newsyslog(8) should attempt to save disk
                     space by compressing the rotated log file using gzip(1).

             -       a minus sign will not cause any special processing, but
                     it can be used as a placeholder to create a flags field
                     when you need to specify any of the following fields.

架設LogAnalyzer 網頁日誌分析工具

,這幾天因為看了網管人雜誌在介紹「LogAnalyzer 網頁日誌分析工具」,上網搜尋了一下發現該篇文章作者 Weithenn ,已將文章同步放置在網站上:
http://www.weithenn.org/cgi-bin/wiki.pl?LogAnalyzer_網頁日誌分析工具_(上)
http://www.weithenn.org/cgi-bin/wiki.pl?LogAnalyzer_網頁日誌分析工具_(下)

由於尚未熟悉freebsd的apache,藉由此次機會順便跑一次 apache+php的安裝

這邊要注意的是:
apache的位置可能與教學不同 ,例如本次架設是freebsd 8.1 + Apache 2.2.15。
apache的一些路徑如下:
  • /usr/local/etc/apache22                   // apache安裝位置
  • /usr/local/etc/rc.d/apache22           // start、stop…
  • /usr/local/www/apache22/data       // 網站預設根目錄
其他則與教學相同

=====
20120425 補充:
log必須確認可以讓 LogAnalyzer 讀取,例如:檔案權限為 644


2012年4月16日 星期一

FreeBSD上的DNS設定

花了將近一週的時間在研讀DNS相關的設定,花的時間稍微有點久了點....
設定上的眉角真的要特別去注意,順便把自己遇到的問題和解法做個紀錄。

設定的參考,主要來自幾個地方
  1. FreeBSD官方手冊
  2. Steven's Linux Note - Articles  bind - DNS 設定
  3. 網路名稱系統-李宗憲
  4. study-area 
  5. DNS server安全防護
主要編輯文件:
  • /etc/namedb/named.conf
  • /etc/namedb/working/正解資訊

安全性附加設定 ”rndc”(remote name daemon control)
  • /etc/namedb/rndc.conf
環境配置:
  • IP:192.168.1.20
  • 本機名稱:dns
  • 網域:hy.fall.idv.tw
  • 上層DNS:dns.fall.idv.tw

詳細設定:
  • /etc/namedb/named.conf
1.設定 listen

找到 
 listen-on       { 127.0.0.1; };
這代表啟動DNS服務時,會監聽的對外IP位址,由於預設只有監聽 127.0.0.1,故啟動後並不會對外服務,必須再新增IP才行,將設定值調整為
listen-on       { 127.0.0.1; 192.168.1.20; };
===題外話===

由於設定時一直忽略這個地方,直到下netstat -an發現只有監聽本機 (如下)
 tcp4       0      0 127.0.0.1.53           *.*                    LISTEN
 這時才驚覺一定是有什麼地方沒有調整(debug時卡最久的地方... config檔果然要看仔細阿!!)

=========

2.設定正解zone

在檔案最下方新增
 // 20120412
zone "hy.fall.idv.tw" {
        type master;
        file "dns.hy.fall.idv.tw.fwd";
};
上面所代表的是,我們將fall.idv.tw網域所管理的資訊,放在dns.hy.fall.idv.tw.fwd這個檔案內。
檔案位置有2種表示方式,「相對位置」、「絕對位置」
「絕對位置」的部份就是直接指出檔案位置,例如:/etc/namedb/working/dns.hy.fall.idv.tw.fwd
「相對位置」必須要參考named.conf最上方的 options 設定,directory 即代表預設的資料夾位置。

  • /etc/namedb/working/dns.fall.idv.tw.fwd
/etc/namedb/working內新增 dns.hy.fall.idv.tw.fwd ,內容如下:

 $TTL 86400
@ IN SOA dns.fall.idv.tw. root.dns.hy.fall.idv.tw. (
        2012041601      ;Serial
        172800          ;Refresh
        900             ;Retry
        3600000         ;Expire
        3600    )       ;Minimum
hy.fall.idv.tw. IN NS dns.
dns.hy.fall.idv.tw. IN A 192.168.1.20

===引用官方手冊 ===
 開頭的 @ 代表網域名稱 twbsd.org,IN 表示為 internet 的資料型態。SOA 後面接的是 twbsd.org,表示這台 twbsd.org 機器是 twbsd.org 網域中的主要名稱伺服器。而 root.twbsd.org 表示管理者的Email 是 root@twbsd.org。
讓我們先看到第一行 $TTL 的部份,$TTL 代表這設定的資料要存多久,其後所接的值是以秒數計算。我們這裡的設定是 172800,表示二天。
正解檔中的內容中除了第一行外,每一行的格式為 [name] [ttl] [class] [type] [data]。以下是每個欄位的說明:
  • name:可以是網域名稱或是主機名稱,如果不寫的話表示與上一個設定相同。
  • ttl:是資料要存活的時間 (time to live),也就是 cache server 將保留在它的 cache 中的時間。如果不寫的話表示和 SOA 中的設定相同。
  • class:指定網路的類型,這個欄位應該都是使用 IN 代表 internet。
  • type:設定該筆資料的型態,例如:MX, A, CNAME, PTR, NS 等。
  • data:就是實際設定資料的部份。
 ============

====補充說明====
  1.   在我這邊的範例,代表 hy.fall.idv.tw. (注意最後的「 .」),因此也可以寫成 「 hy.fall.idv.tw. IN SOA dns.fall.idv.tw. root.dns.hy.fall.idv.tw.
  2.  SOA 後面必須接「上層DNS」,再接上dns.hy.fall.idv.tw主機的管理者emailroot.dns.hy.fall.idv.tw.
============

 基本上,這樣的設定就夠了,反解的部份由於上層會幫我們設定好,因此不用特別再去設定。

啟動DNS服務:
/etc/rc.d/named start
檢查log訊息:
tail -n 30 /var/log/messages

 這邊舉出幾個我碰到的問題:

======

 Apr 12 17:45:47 dns named[2563]: dns.hy.fall.idv.tw.fwd:9: ignoring out-of-zone data (hy.fall.idv.tw)

代表 dns.hy.fall.idv.tw.fwd named.confzone沒設定正確,例如:

 named.conf:
 zone "dns.zongyan-lab.fall.idv.tw" ( .....略
應該為:
 zone "zongyan-lab.fall.idv.tw" ( .....略

======

 Apr 12 17:45:47 dns named[2563]: zone dns.hy.fall.idv.tw/IN: has 0 SOA records
Apr 12 17:45:47 dns named[2563]: zone dns.hy.fall.idv.tw/IN: has no NS records

代表 SOA 設定錯誤,必須指到上層的DNS

======


設定 ”rndc”(remote name daemon control):

  • 產生key檔
cd /usr/sbin/
./rndc-confgen -a
  • 確認是否有建立key
more /etc/namedb/rndc.key

 ./rndc-confgen > /etc/namedb/rndc.conf

  • rndc.key的內容,取代rndc.conf最上面的
 key "rndc-key" {
        algorithm hmac-md5;
        secret "XXXXXXXXXXXXX";
};

  • named.conf 加上

include "/etc/namedb/rndc.key";

controls {
        inet 202.3.168.37 port 953 allow { 127.0.0.1; 202.3.168.37; } keys { rnd
c-key; };
        };
  • 重新啟動 nsmed




2012年4月12日 星期四

如何重新設定freebsd之環境設定

在安裝完成freebsd之後,如果想要再一次進入設定頁面去調整網卡設定、鍵盤配置、時區、…等資料,請直接下
sysinstall

2012年4月11日 星期三

最近在研讀DNS設定

由於工作內容的關係,不像以往輕鬆,以前要做任何的設定只要請負責的同事幫個忙即可,
現在身份轉換了,很多東西都要自己來,而大部分的管理設定都略懂一二,唯獨DNS的部份仍是白紙一張,
這份工作因為必須常常調整DNS,因此在DNS的架設、管理必須要熟悉才行!
目前還在慢慢的啃網路上的資料,等瞭解後再來補足這篇。

調整putty的設定,讓home、end key正常

由於之前以putty或pietty時,總會因為home和end按鍵沒辦法正常使用而感到些許困擾,
另外,像是鍵盤右方的數字鍵也不正常。
雖然不是大問題,但是使用上總會卡卡的,因此找了一下解決方式,
解決方法意外的簡單,不用特別去改freebsd內的設定檔,只要修改putty內的
 connection>data>terminal-type string,將預設的 xterm 改為 linux 即可。

如果之前已經有紀錄登錄資訊於putty內,別忘了先load再做設定。

2012年3月29日 星期四

freebsd 下的 toor 帳號

參考官方手冊 13.5章節 http://www.freebsd.org/zh/FAQ/security.html

13.5. 我發現了這個 UID 0 toor 帳號,這是什麼 碗糕?我被黑掉了嗎?
放心。toor 是一個 “alternative” 管理者帳號 (toor 是 root 的轉向拼法)。 以往是跟隨 bash(1) 安裝而建制的,後來則成為系統內定建制的一 個帳號。這個帳號將伴隨一個非標準的 shell 測試使用, 讓你不需要去 更改到 root 的內建 shell。因為這些其他的 shell 並沒有跟隨系統預設值安裝 (舉例來說,某些由 ports 安裝的 shell package),而被內定安裝在 /usr/local/bin 目錄下,有可能存在不同的檔案系統中。 倘若 root 的 shell 被放在 /usr/local/bin,且 /usr (或是其他包含著 /usr/local/bin 這個子目錄的檔案系統) 因為某些原因並沒有被正常的 mount 起來的話,root 將無法正常的登入系統進行維修 (雖然說你重開機成單人模式就會問你要 載入哪個 shell)。
有些人使用 toor 帳號進行每日的 root 維護工作,如此可以使用非標準的 shell,而 root 可以保留標準 shell, 以因應單一使用者模式 (single user mode) 或緊急狀況處理。 依照系統內定值,你將無法使用 toor 登入, 因為這個帳號尚未更改密碼設定。因此你如果你想啟動這個帳號,你需要 使用 root 登入系統並且修改 toor 的密碼。

2012年3月27日 星期二

win xp 下 route 指令

 http://w-type.blogspot.com/2007/09/windows-xp-route.html


Route print 用來顯示路由表

此例中實際只安裝ㄧ片網路卡,此路由表中的幾個欄位:

Network Destination
表示路由的網路目的地,可以是 IP 網段或IP位址。

Netmask
表示子網路遮罩,用來配合 Network Destination 的運算。

Gateway
是封包欲送往的 IP 位址,如果目的 IP 位址與 Netmask AND 邏輯運算,剛好與 Network Destination 相同,封包就會送到此 Gateway IP 位址。

Interface
是此電腦送出封包的 IP 位址。

Metric
則是傳送成本的參考數字,通常與網路連接速度有關,Windows XP 本身有自動計算 Metric 的能力,以本表中範例而言100Mbps 的網路速度 Metric 設為 20,迴路(loopback)的 Metric 設為 1,越低的 Metric 表示速度越快。
接著針對每一筆路由表作說明:

1.
第一筆(Network Destination0.0.0.0 .... )是預設路徑(default route),只要路由表找不到傳送路徑的封包,最後都會由會交由預設路徑傳送,因為不論是什麼 IP 位址與 0.0.0.0 的網路遮罩作 AND 運算,結果都是 0.0.0.0,因此封包會被傳送到 192.168.1.1 此一Gateway

2.
第二筆(Network Destination127.0.0.1 ... )是迴路路徑,因此所有要傳送到 127.x.x.x 的封包最候都會送到 127.0.0.1 IP 位址,也就是電腦自己。

3.
第三筆(Network Destination192.168.1.0)是電腦目前所處的網段路徑,所有要送到 192.168.1.0 都封包都直接由電腦本身 192.168.1.3 IP 送出,不需透過其他路由器。

4.
第四筆(Network Destination192.168.1.3)是電腦本身的 IP 位址,所以要把封包送給自己,就直接送到 127.0.0.1 這個內部IP位址。

5.
第五筆(Network Destination192.168.1.255)是電腦目前所處網段的廣播路徑,要傳送到 192.168.1.255 的網段廣播封包,都直接由電腦本身 192.168.1.3 IP 送出,不需透過其他路由器。

6.
第六筆(Network Destination224.0.0.0)是於多重傳播路徑,所有要送到 224.x.x.x IP 位址都會直接交由電腦本身 192.168.1.3 IP 送出,不需透過其他路由器。

7.
第七筆(Network Destination255.255.255.255)代表廣播位址,也就是 255.255.255.255 目的位址的封包都會直接交由電腦本身 192.168.1.3 IP 送出,不會透過其他路由器,所有在 192.168.1.x 網段的電腦都會收到此封包。
在路由表的選擇上,可能會有兩條以上符合的路徑可供選擇,這時候應該如何選擇路徑?以傳送目的地 192.168.1.100 的封包為例,在上述的路由表第一筆與 Netmask 0.0.0.0 AND 運算結果符合 Network Destination 0.0.0.0,與第三筆 Netmask 255.255.255.0 AND 的運算結果也符合 Network Destination 192.168.1.0;這時路徑會選擇以Netmask 轉換為二進制之後含1最多那一筆來傳送,因此封包最後將由第三筆路徑做處理。
上述是一張網路卡時的路由表運作,如果加入另一張網路卡時,封包將會如何傳送?我們還是先列出路由表。


由表中可以發現所有原有路徑變成兩份,因此可能有兩條路徑可以選擇,以 default route 路徑而言就有 192.168.1.1 192.168.216.254 兩條 Gateway 可走,因此路徑的選擇就依 Metric 大小來決定,metric 越小表示成本越低,所以路徑將選擇較低的 default route,因而表中顯示預設閘道(default gateway)會是 Metric 較低的 192.168.216.254。如果 Metric 一樣,這時就以隨機方式選擇路徑;如果原來的 default route 的網路連線斷了,那路徑將主動切換到另一條 default route

其他常用route 指令

● route
add 用來加入路由路徑
例如:route add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20
指出 Network DestinationNetmaskGatewayInterface metric


● route
-p add 用來永久加入路由路徑,使用-p 參數可以保留路徑設定,不會因為電腦重開機而消失。
例如:route -p add 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 20


● route
delete用來刪除路由路徑。
例如:route delete 192.168.0.0 mask 255.255.0.0


● route
change用來修改現有的路徑設定。
例如:route change 192.168.0.0 mask 255.255.0.0 192.168.1.1 if 0x2 metric 10

2012年3月23日 星期五

安裝sudo

# cd /usr/ports/security/sudo
# make install clean

設定檔的位置在
/usr/local/etc/sudoers
設定的方法,指定某個帳號可以使用全部權限:
帳號 ALL=(ALL) ALL
指定某個群組的使用者都有權限:
%wheel ALL=(ALL) ALL

freebsd安裝vim

使用ports安裝

# cd /usr/ports/editors/vim-lite/
# sudo make install clean

安裝完畢後即可使用vim指令,若要將vim取代vi

# alias vi='vim'

另外,由於安裝時並不會產生設定檔,需自行由安裝目錄複製
# cp /usr/local/share/vim/vim73/vimrc_example.vim /usr/local/share/vimrc

在freebsd上使用locate

基本上,安裝完locate之後,需要先建立索引檔案,否則會無法搜尋
在以往使用ubuntu時,只要直接下 updatedb 即可,但是在freebsd裡面,則是執行
 /usr/libexec/locate.updatedb

一般來說,不需要特別去執行updatedb,系統會例行更新。

* 執行時需以root權限執行

2012年3月22日 星期四

調整freebsd更新套件(ports)來源

 http://www.24m.org/wordpress/?p=258

編輯 /etc/make.conf ,如果沒有就做個新的吧。
內容如下:
KERNCONF=MYBSD
SUP_UPDATE= yes
SUP= /usr/local/bin/cvsup
SUPHOST= cvsup.tw.FreeBSD.org
SUPFILE= /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE= /usr/src/share/examples/cvsup/ports-supfile
接下來,到 /usr/src 或是 /usr/ports 底下,下
make update
然後就去喝茶吃蛋糕等吧。(通常cvsup server會限制連進來的連線數,所以一次就抓一個就好)
更新了ports tree後,要make新東西,都得到國外去抓,所以要讓抓取速度快,就得改一下make.conf,讓系統就進在台灣抓就好啦。
# for make install
MASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} MASTER_SORT_REGEX= \.tw/ \.tw\. \.edu/ \.edu\. FETCH_CMD=fetch -U -A -P
7.1上是work的。

Freebsd 和套件有關的指令

Freebsd 和套件有關的指令 無次要群組
作者或來源 瘦河馬 2009-10-27 15:52:24
關鍵字 1freebsd 2port
此文完整連結 http://note.tc.edu.tw/179.html

Freebsd 套件和套件有關的指令
Freebsd 有著極棒的套件管理方式,讓使用者一點也不會覺得麻煩和混亂。
在 Freebsd 上的套件(packages)要如何安裝,可以自行下載檔案解壓編譯,或是利用 ports,什麼是 ports?
在網路上諸多的套件,經安裝及測試沒問題後,將其依編譯時所需的組態設定、編譯程序及安裝程序以固定的格式擺在一起,並經 Freebsd 維護小組認可後即加入 ports 的集合中。當安裝完 freebsd 後(或同時),可以選擇安裝 ports 的集合,如此未來若有套件想安裝,只要進到  /usr/ports/ 一陣亂找後,就能找到想要的套件了。
一、安裝 ports 的集合(ports tree/ports collection)
# sysinstall
Configure --> Distributions -->ports 然後選擇 install,可以丟入 cd或dvd,讓他由光碟片安裝,要花滿久的時間,至少一個小時,可以先去喝杯茶。
二、用ports安裝套件的方法
安裝完 ports 的集合之後,未來要用 ports 安裝套件就像吃飯一樣簡單
例如要安裝 mysql 6.0
# cd /usr/ports/databases/mysql60-server/
# make install
如此會產生一個 work/ 的資料夾,裡面有下載回來的套件,如果要安裝完畢後刪除下載檔,加一個'clean' 即可
# make install clean
三、有關套件的指令:
安裝好的套件在 /var/db/pkg
查看套件資訊 # pkg_info -L <== -L可看版本
加入套件 # pkg_add 套件名
刪除套件 # pkg_delete 套件名 <==套件名必需完整。
查看套件相依性 # pkg_tree <==請ports sysutils/pkg_tree安裝
看現在版本和/usr/ports中的版本比較 # pkg_version -v
四、維持ports 集合的更新
ports 的集合也需要更新,以取得新的套件及/usr/src的原始碼更新,更新 ports tree 的方法很簡單,可以使用 CVSup 來保持 ports 在最新狀態。
CVSup 是一套用來維持軟體原始碼和開發團隊同步的工具,它會經由網路向所設定的軟體伺服器檢查並更新原始碼的版本。我們可以使用 CVSup 來更新 port tree,也可以用來更新 /usr/src 目錄下的 FreeBSD 原始碼。
安裝 CVSup,因為我們不使用圖形介面,所以安裝 cvsup-without-gui
# cd /usr/ports/net/cvsup-without-gui
# make install
完成後,在系統中有一份以 CVSup 更新 port tree 的設定檔範例,可以直接加以修改或著先複製一份後再修改。我們將該設定檔範例複製到 /root 之後再加以修改:
# cp /usr/share/examples/cvsup/ports-supfile /root/
修改 /root/ports-supfile 所要使用的 CVSup 伺服器:
*default host=cvsup.tw.freebsd.org
設定完畢之後,就可以開始進行 ports 的更新了
# cvsup -g -L 2 /root/ports-supfile 上述指令中,參數 g 表示不使用圖形介面,而參數 L 及其後所跟隨的數字 2 表示我們要看到更新過程的記錄的詳細程度,數字可以從 0 ~ 2,最後的檔名表示所要使用的設定檔。
這樣就能維持 ports tree 的更新。
五、現有套件的更新
現有套件可使用以下指令來查看是否有更新
# pkg_version -v
倘若有較新版本的套件想更新時,可以先移除舊的再安裝新的,但這樣不是很方便,所以可以使用portupgrade來更新
安裝portupgrade
# cd /usr/ports/ports-mgmt/portupgrade
# make install
安裝完畢後,未來要更新套件,就到ports中套件的目錄下 portupgrade 指令即可
安裝完套件記得要執行 rehash 才會生效,否則要重新登入。

設定freebsd啟用tab鍵補全指令

剛安裝完畢的freebsd無法使用tab鍵來補全指令,需調整下列檔案
vi /etc/csh.cshrc
新增 set autolist
此時只有root權限有tab補全功能
若要調整非root使用者,將使用者的shell由sh調整成csh
pw usermod 用户ID -s /bin/csh
設定完之後,重新login將會發現最前面的提示自由#變為%

安裝freebsd筆記

freebsd安裝比linux麻煩...

freebsd官方網站 http://www.freebsd.org/

下載專區內有不同的檔案,其官方說明如下

dvd1
This contains everything necessary to install the base FreeBSD operating system, a collection of pre-built packages aimed at getting a graphical workstation up and running. It also supports booting into a "livefs" based rescue mode. This should be all you need if you can burn and use DVD-sized media.
disc1
This contains the base FreeBSD operating system. It also supports booting into a "livefs" based rescue mode. There are no pre-built packages.
bootonly
This supports booting a machine using the CDROM drive but does not contain the support for installing FreeBSD from the CD itself. You would need to perform a network based install (e.g. from an FTP server) after booting from the CD.
memstick
This can be written to an USB memory stick (flash drive) and used to do an install on machines capable of booting off USB drives. It also supports booting into a "livefs" based rescue mode. There are no pre-built packages. As one example of how to use the memstick image, assuming the USB drive appears as /dev/da0 on your machine something like this should work:
# dd if=FreeBSD-9.0-RELEASE-amd64-memstick.img of=/dev/da0 bs=10240 conv=sync
Be careful to make sure you get the target (of=) correct.
選擇自己所需即可

FreeBSD下Mount總結!

轉自 http://blog.xuite.net/yugechiu/man/6032375

FreeBSD下Mount總結!
--------------------------------------------------------------------------------

1.mount FAT/FAT32分區:(C盤為例)
mount -t msdos /dev/ad0s1 /mnt

mount_msdos /dev/ad0s1 /mnt for 4.x
mount_msdosfs /dev/ad0s1 /mnt for 5.x
2.mout Windows的擴展分區(FAT/FAT32):
命令和1一樣,只是要記住:擴展分區從s5開始,例如mount D盤,可用:
mount -t msdos /dev/ad0s5 /mnt
mount_msdos /dev/ad0s5 /mnt for 4.x
mount_msdosfs /dev/ad0s5 /mnt for 5.x

3.mount NTFS分區:(C盤為例)
mount -t ntfs /dev/ad0s1 /mnt

mount_ntfs /dev/ad0s1 /mnt
[注意]1.chinese/gbfs 的 ntfs 似乎有問題,不建議玩家級用戶使用
注意2.:要讓mount上的windows 分區(或CD-ROM)顯示中文,需要升級你的ports,再安裝gbfs:
#cd /usr/ports/chinese/gbfs
#make install clean
然後編譯內核,註釋掉options CD9660
options MSDOS
注意3.在5.1-current上不用安裝gbfs,用:
mount_msdosfs -L zh_CN.GB18030 /dev/ad0sX /mnt
命令就可以支持FAT32分區上的中文文件名,當然,locale可以不用18030,zh_CN.eucCN, zh_CN.GBK都可以!

4.mount Linux Ext2fs/Ext3fs:
在內核裡面加入options EXT2FS,編譯內核。
mount 的時候用mount_ext2fs 命令即可,ext3fs的mount也用mount_ext2fs
5.mount 普通數據光盤:
mount_cd9660 /dev/acd0 /cdrom
6.mount ISO 文件
在5.x中如下
mdconfig -a -t vnode -f abc.iso -u 1
mount_cd9660 /dev/md1 /cdrom
4.8的版本
vnconfig /dev/vn0 /home/xiaoche/a.iso
mount -t cd9660 /dev/vn0 /mnt
umount /mnt
vnconfig -u /dev/vn0
7.mount CD、VCD、DVD
播放CD、VCD、DVD不用先mount上。
如果你一定要mount上,可以這樣:#mount _cd9660 -s 0 /dev/acd0 /cdrom
8.mount 軟盤:
1.Format:
# /usr/sbin/fdformat -f 1440 /dev/fd0
2. Run disklabel:
# /sbin/disklabel -B -r -w /dev/fd0 fd1440
3.Create New FS:
# /sbin/newfs_msdos /dev/fd0
4.Mount & Use
#mount_msdosfs /dev/fd0 /mnt

9.mount usb
確保內核中有如下項
device scbus
device da
device cd
在GENERIC中默認都有,如果沒有,請編譯內核。
大多數U盤用的是FAT 文件系統,所以用
mount -t msdos /dev/da0 /mnt
掛載
10.mount ZIP軟盤: OneZ 兄提供
#mount_msdosfs /dev/afd0s4 /mnt/zip

相關閱讀
unmount
http://wiki.debian.org.hk/w/Unmount/eject_filesystem

常見問題:
無法卸載,有可能是正在使用該掛載目錄,切換至其他目錄再卸載即可。