2009年12月28日月曜日

error: unpacking of archive failed on file /boot/System.map-2.6.9-89.0.18.EL;4b37bd31: cpio: write failed - No space left on device

CentOS4
/etc/cron.daily/yum.cronにて以下のようなエラーが発生していた。

error: unpacking of archive failed on file /boot/System.map-2.6.9-89.0.18.EL;4b37bd31: cpio: write failed - No space left on device

bootパーティションの容量不足ということらしいので、以前行った旧カーネルを削除して容量確保する処理を行いましたが(詳しくはこちらを参照)、それでも解消できないという現象が発生しました。そのとき行った手順が以下の通りです。

※yum-utilsが必要なので事前に、yum install yum-utils でインストールを済ませておく

●最初に古いカーネルを削除する(1世代前のカーネルは残す)
# package-cleanup --oldkernels
この段階では問題が解消されない。
●bootの中身を確認
# ls -al /boot
total 95124
drwxr-xr-x 4 root root 10240 Dec 28 05:01 .
drwxr-xr-x 23 root root 4096 Dec 26 09:09 ..
-rw-r--r-- 1 root root 50058 Nov 3 2007 config-2.6.9-55.0.12.ELsmp
-rw-r--r-- 1 root root 50057 Jun 27 2007 config-2.6.9-55.0.2.ELsmp
-rw-r--r-- 1 root root 50057 Sep 5 2007 config-2.6.9-55.0.6.ELsmp
-rw-r--r-- 1 root root 50057 Sep 28 2007 config-2.6.9-55.0.9.ELsmp
-rw-r--r-- 1 root root 50053 May 3 2007 config-2.6.9-55.ELsmp
-rw-r--r-- 1 root root 50550 May 8 2008 config-2.6.9-67.0.15.ELsmp
-rw-r--r-- 1 root root 50549 Dec 20 2007 config-2.6.9-67.0.1.ELsmp
-rw-r--r-- 1 root root 50550 Jun 26 2008 config-2.6.9-67.0.20.ELsmp
-rw-r--r-- 1 root root 50550 Jul 24 2008 config-2.6.9-67.0.22.ELsmp
-rw-r--r-- 1 root root 50549 Feb 3 2008 config-2.6.9-67.0.4.ELsmp
-rw-r--r-- 1 root root 50549 Mar 15 2008 config-2.6.9-67.0.7.ELsmp
-rw-r--r-- 1 root root 50545 Nov 17 2007 config-2.6.9-67.ELsmp
-rw-r--r-- 1 root root 51127 Jan 15 2009 config-2.6.9-78.0.13.ELsmp
-rw-r--r-- 1 root root 51127 Mar 13 2009 config-2.6.9-78.0.17.ELsmp
-rw-r--r-- 1 root root 51126 Aug 6 2008 config-2.6.9-78.0.1.ELsmp
-rw-r--r-- 1 root root 51127 May 1 2009 config-2.6.9-78.0.22.ELsmp
-rw-r--r-- 1 root root 51126 Oct 8 2008 config-2.6.9-78.0.5.ELsmp
-rw-r--r-- 1 root root 51126 Nov 20 2008 config-2.6.9-78.0.8.ELsmp
-rw-r--r-- 1 root root 51239 Sep 15 20:25 config-2.6.9-89.0.11.ELsmp
-rw-r--r-- 1 root root 51614 Oct 24 06:22 config-2.6.9-89.0.15.EL
-rw-r--r-- 1 root root 51239 Oct 24 06:34 config-2.6.9-89.0.15.ELsmp
-rw-r--r-- 1 root root 51614 Nov 4 07:28 config-2.6.9-89.0.16.EL
-rw-r--r-- 1 root root 51239 Nov 4 07:43 config-2.6.9-89.0.16.ELsmp
-rw-r--r-- 1 root root 51239 Dec 16 04:43 config-2.6.9-89.0.18.ELsmp
-rw-r--r-- 1 root root 51238 Aug 14 23:27 config-2.6.9-89.0.7.ELsmp
-rw-r--r-- 1 root root 51238 Aug 24 21:03 config-2.6.9-89.0.9.ELsmp
drwxr-xr-x 2 root root 1024 Dec 18 04:20 grub
-rw-r--r-- 1 root root 1437844 Nov 4 2007 initrd-2.6.9-55.0.12.ELsmp.img
-rw-r--r-- 1 root root 1437813 Aug 29 2007 initrd-2.6.9-55.0.2.ELsmp.img
-rw-r--r-- 1 root root 1437823 Sep 8 2007 initrd-2.6.9-55.0.6.ELsmp.img
-rw-r--r-- 1 root root 1437837 Sep 29 2007 initrd-2.6.9-55.0.9.ELsmp.img
-rw-r--r-- 1 root root 1440551 Aug 29 2007 initrd-2.6.9-55.ELsmp.img
-rw-r--r-- 1 root root 1370811 May 11 2008 initrd-2.6.9-67.0.15.ELsmp.img
-rw-r--r-- 1 root root 1370726 Dec 22 2007 initrd-2.6.9-67.0.1.ELsmp.img
-rw-r--r-- 1 root root 1370818 Jun 28 2008 initrd-2.6.9-67.0.20.ELsmp.img
-rw-r--r-- 1 root root 1370824 Jul 26 2008 initrd-2.6.9-67.0.22.ELsmp.img
-rw-r--r-- 1 root root 1370824 Feb 5 2008 initrd-2.6.9-67.0.4.ELsmp.img
-rw-r--r-- 1 root root 1370813 Mar 17 2008 initrd-2.6.9-67.0.7.ELsmp.img
-rw-r--r-- 1 root root 1370427 Dec 17 2007 initrd-2.6.9-67.ELsmp.img
-rw-r--r-- 1 root root 1392759 Jan 16 2009 initrd-2.6.9-78.0.13.ELsmp.img
-rw-r--r-- 1 root root 1392704 Apr 23 2009 initrd-2.6.9-78.0.17.ELsmp.img
-rw-r--r-- 1 root root 1392691 Sep 14 2008 initrd-2.6.9-78.0.1.ELsmp.img
-rw-r--r-- 1 root root 1393200 May 8 2009 initrd-2.6.9-78.0.22.ELsmp.img
-rw-r--r-- 1 root root 1392704 Oct 19 2008 initrd-2.6.9-78.0.5.ELsmp.img
-rw-r--r-- 1 root root 1392762 Nov 21 2008 initrd-2.6.9-78.0.8.ELsmp.img
-rw-r--r-- 1 root root 1403612 Sep 17 05:03 initrd-2.6.9-89.0.11.ELsmp.img
-rw-r--r-- 1 root root 1422187 Oct 28 09:34 initrd-2.6.9-89.0.15.EL.img
-rw-r--r-- 1 root root 417792 Oct 27 05:45 initrd-2.6.9-89.0.15.ELsmp.img
-rw-r--r-- 1 root root 1422208 Nov 6 09:06 initrd-2.6.9-89.0.16.EL.img
-rw-r--r-- 1 root root 1403631 Nov 6 09:09 initrd-2.6.9-89.0.16.ELsmp.img
-rw-r--r-- 1 root root 1403641 Dec 18 04:20 initrd-2.6.9-89.0.18.ELsmp.img
-rw-r--r-- 1 root root 1403572 Aug 23 06:01 initrd-2.6.9-89.0.7.ELsmp.img
-rw-r--r-- 1 root root 1403570 Aug 26 05:21 initrd-2.6.9-89.0.9.ELsmp.img
drwx------ 2 root root 12288 Aug 30 2007 lost+found
-rw-r--r-- 1 root root 9371 Aug 13 2006 message
-rw-r--r-- 1 root root 9371 Aug 13 2006 message.ja
-rw-r--r-- 1 root root 65151 May 9 2008 symvers-2.6.9-67.0.15.ELsmp.gz
-rw-r--r-- 1 root root 65129 Dec 20 2007 symvers-2.6.9-67.0.1.ELsmp.gz
-rw-r--r-- 1 root root 65151 Jun 26 2008 symvers-2.6.9-67.0.20.ELsmp.gz
-rw-r--r-- 1 root root 65151 Jul 24 2008 symvers-2.6.9-67.0.22.ELsmp.gz
-rw-r--r-- 1 root root 65129 Feb 3 2008 symvers-2.6.9-67.0.4.ELsmp.gz
-rw-r--r-- 1 root root 65129 Mar 15 2008 symvers-2.6.9-67.0.7.ELsmp.gz
-rw-r--r-- 1 root root 65129 Nov 17 2007 symvers-2.6.9-67.ELsmp.gz
-rw-r--r-- 1 root root 67032 Jan 15 2009 symvers-2.6.9-78.0.13.ELsmp.gz
-rw-r--r-- 1 root root 67032 Mar 13 2009 symvers-2.6.9-78.0.17.ELsmp.gz
-rw-r--r-- 1 root root 67032 Aug 6 2008 symvers-2.6.9-78.0.1.ELsmp.gz
-rw-r--r-- 1 root root 67069 May 1 2009 symvers-2.6.9-78.0.22.ELsmp.gz
-rw-r--r-- 1 root root 67032 Oct 8 2008 symvers-2.6.9-78.0.5.ELsmp.gz
-rw-r--r-- 1 root root 67032 Nov 20 2008 symvers-2.6.9-78.0.8.ELsmp.gz
-rw-r--r-- 1 root root 68382 Sep 15 20:25 symvers-2.6.9-89.0.11.ELsmp.gz
-rw-r--r-- 1 root root 67596 Oct 24 06:22 symvers-2.6.9-89.0.15.EL.gz
-rw-r--r-- 1 root root 68382 Oct 24 06:35 symvers-2.6.9-89.0.15.ELsmp.gz
-rw-r--r-- 1 root root 67596 Nov 4 07:29 symvers-2.6.9-89.0.16.EL.gz
-rw-r--r-- 1 root root 68382 Nov 4 07:43 symvers-2.6.9-89.0.16.ELsmp.gz
-rw-r--r-- 1 root root 68382 Dec 16 04:45 symvers-2.6.9-89.0.18.ELsmp.gz
-rw-r--r-- 1 root root 68382 Aug 14 23:28 symvers-2.6.9-89.0.7.ELsmp.gz
-rw-r--r-- 1 root root 68382 Aug 24 21:03 symvers-2.6.9-89.0.9.ELsmp.gz
-rw-r--r-- 1 root root 771586 Nov 3 2007 System.map-2.6.9-55.0.12.ELsmp
-rw-r--r-- 1 root root 771374 Jun 27 2007 System.map-2.6.9-55.0.2.ELsmp
-rw-r--r-- 1 root root 771586 Sep 5 2007 System.map-2.6.9-55.0.6.ELsmp
-rw-r--r-- 1 root root 771586 Sep 28 2007 System.map-2.6.9-55.0.9.ELsmp
-rw-r--r-- 1 root root 771273 May 3 2007 System.map-2.6.9-55.ELsmp
-rw-r--r-- 1 root root 777506 May 8 2008 System.map-2.6.9-67.0.15.ELsmp
-rw-r--r-- 1 root root 776963 Dec 20 2007 System.map-2.6.9-67.0.1.ELsmp
-rw-r--r-- 1 root root 777533 Jun 26 2008 System.map-2.6.9-67.0.20.ELsmp
-rw-r--r-- 1 root root 777533 Jul 24 2008 System.map-2.6.9-67.0.22.ELsmp
-rw-r--r-- 1 root root 776963 Feb 3 2008 System.map-2.6.9-67.0.4.ELsmp
-rw-r--r-- 1 root root 777145 Mar 15 2008 System.map-2.6.9-67.0.7.ELsmp
-rw-r--r-- 1 root root 776963 Nov 17 2007 System.map-2.6.9-67.ELsmp
-rw-r--r-- 1 root root 797154 Jan 15 2009 System.map-2.6.9-78.0.13.ELsmp
-rw-r--r-- 1 root root 797158 Mar 13 2009 System.map-2.6.9-78.0.17.ELsmp
-rw-r--r-- 1 root root 797288 Aug 6 2008 System.map-2.6.9-78.0.1.ELsmp
-rw-r--r-- 1 root root 797656 May 1 2009 System.map-2.6.9-78.0.22.ELsmp
-rw-r--r-- 1 root root 797288 Oct 8 2008 System.map-2.6.9-78.0.5.ELsmp
-rw-r--r-- 1 root root 797420 Nov 20 2008 System.map-2.6.9-78.0.8.ELsmp
-rw-r--r-- 1 root root 785600 Sep 15 20:25 System.map-2.6.9-89.0.11.ELsmp
-rw-r--r-- 1 root root 768660 Oct 24 06:22 System.map-2.6.9-89.0.15.EL
-rw-r--r-- 1 root root 785654 Oct 24 06:34 System.map-2.6.9-89.0.15.ELsmp
-rw-r--r-- 1 root root 768660 Nov 4 07:28 System.map-2.6.9-89.0.16.EL
-rw-r--r-- 1 root root 785654 Nov 4 07:43 System.map-2.6.9-89.0.16.ELsmp
-rw-r--r-- 1 root root 785682 Dec 16 04:43 System.map-2.6.9-89.0.18.ELsmp
-rw-r--r-- 1 root root 785498 Aug 14 23:27 System.map-2.6.9-89.0.7.ELsmp
-rw-r--r-- 1 root root 785498 Aug 24 21:03 System.map-2.6.9-89.0.9.ELsmp
-rw-r--r-- 1 root root 1451171 Nov 3 2007 vmlinuz-2.6.9-55.0.12.ELsmp
-rw-r--r-- 1 root root 1450563 Jun 27 2007 vmlinuz-2.6.9-55.0.2.ELsmp
-rw-r--r-- 1 root root 1450984 Sep 5 2007 vmlinuz-2.6.9-55.0.6.ELsmp
-rw-r--r-- 1 root root 1451003 Sep 28 2007 vmlinuz-2.6.9-55.0.9.ELsmp
-rw-r--r-- 1 root root 1450489 May 3 2007 vmlinuz-2.6.9-55.ELsmp
-rw-r--r-- 1 root root 1459207 May 8 2008 vmlinuz-2.6.9-67.0.15.ELsmp
-rw-r--r-- 1 root root 1458873 Dec 20 2007 vmlinuz-2.6.9-67.0.1.ELsmp
-rw-r--r-- 1 root root 1459211 Jun 26 2008 vmlinuz-2.6.9-67.0.20.ELsmp
-rw-r--r-- 1 root root 1459227 Jul 24 2008 vmlinuz-2.6.9-67.0.22.ELsmp
-rw-r--r-- 1 root root 1458782 Feb 3 2008 vmlinuz-2.6.9-67.0.4.ELsmp
-rw-r--r-- 1 root root 1459052 Mar 15 2008 vmlinuz-2.6.9-67.0.7.ELsmp
-rw-r--r-- 1 root root 1458902 Nov 17 2007 vmlinuz-2.6.9-67.ELsmp
-rw-r--r-- 1 root root 1483646 Jan 15 2009 vmlinuz-2.6.9-78.0.13.ELsmp
-rw-r--r-- 1 root root 1483638 Mar 13 2009 vmlinuz-2.6.9-78.0.17.ELsmp
-rw-r--r-- 1 root root 1483770 Aug 6 2008 vmlinuz-2.6.9-78.0.1.ELsmp
-rw-r--r-- 1 root root 1483793 May 1 2009 vmlinuz-2.6.9-78.0.22.ELsmp
-rw-r--r-- 1 root root 1483860 Oct 8 2008 vmlinuz-2.6.9-78.0.5.ELsmp
-rw-r--r-- 1 root root 1483918 Nov 20 2008 vmlinuz-2.6.9-78.0.8.ELsmp
-rw-r--r-- 1 root root 1472648 Sep 15 20:25 vmlinuz-2.6.9-89.0.11.ELsmp
-rw-r--r-- 1 root root 1536207 Oct 24 06:22 vmlinuz-2.6.9-89.0.15.EL
-rw-r--r-- 1 root root 1472454 Oct 24 06:34 vmlinuz-2.6.9-89.0.15.ELsmp
-rw-r--r-- 1 root root 1536244 Nov 4 07:28 vmlinuz-2.6.9-89.0.16.EL
-rw-r--r-- 1 root root 1472608 Nov 4 07:43 vmlinuz-2.6.9-89.0.16.ELsmp
-rw-r--r-- 1 root root 1472585 Dec 16 04:43 vmlinuz-2.6.9-89.0.18.ELsmp
-rw-r--r-- 1 root root 1472446 Aug 14 23:27 vmlinuz-2.6.9-89.0.7.ELsmp
-rw-r--r-- 1 root root 1472450 Aug 24 21:03 vmlinuz-2.6.9-89.0.9.ELsmp

●1世代前以外に明らかに古いカーネルが見受けられる
SMPは、package-cleanupでは消えないのか?ということでyumでremoveしてみました。

# yum remove kernel-*-2.6.9-55*
Loading "fastestmirror" plugin
Setting up Remove Process
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package kernel-hugemem-devel.i686 0:2.6.9-55.0.6.EL set to be erased
---> Package kernel-hugemem-devel.i686 0:2.6.9-55.0.9.EL set to be erased
---> Package kernel-hugemem-devel.i686 0:2.6.9-55.0.2.EL set to be erased
---> Package kernel-smp.i686 0:2.6.9-55.0.12.EL set to be erased
---> Package kernel-smp-devel.i686 0:2.6.9-55.0.2.EL set to be erased
---> Package kernel-smp-devel.i686 0:2.6.9-55.0.6.EL set to be erased
---> Package kernel-smp-devel.i686 0:2.6.9-55.0.9.EL set to be erased
---> Package kernel-hugemem-devel.i686 0:2.6.9-55.0.12.EL set to be erased
---> Package kernel-smp.i686 0:2.6.9-55.0.2.EL set to be erased
---> Package kernel-smp.i686 0:2.6.9-55.0.9.EL set to be erased
---> Package kernel-smp.i686 0:2.6.9-55.0.6.EL set to be erased
---> Package kernel-smp-devel.i686 0:2.6.9-55.0.12.EL set to be erased
---> Package kernel-smp.i686 0:2.6.9-55.EL set to be erased
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
kernel-hugemem-devel i686 2.6.9-55.0.6.EL installed 12 M
kernel-hugemem-devel i686 2.6.9-55.0.9.EL installed 12 M
kernel-hugemem-devel i686 2.6.9-55.0.2.EL installed 12 M
kernel-hugemem-devel i686 2.6.9-55.0.12.EL installed 12 M
kernel-smp i686 2.6.9-55.0.12.EL installed 29 M
kernel-smp i686 2.6.9-55.0.2.EL installed 29 M
kernel-smp i686 2.6.9-55.0.9.EL installed 29 M
kernel-smp i686 2.6.9-55.0.6.EL installed 29 M
kernel-smp i686 2.6.9-55.EL installed 29 M
kernel-smp-devel i686 2.6.9-55.0.2.EL installed 12 M
kernel-smp-devel i686 2.6.9-55.0.6.EL installed 12 M
kernel-smp-devel i686 2.6.9-55.0.9.EL installed 12 M
kernel-smp-devel i686 2.6.9-55.0.12.EL installed 12 M

Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 13 Package(s)
Total download size: 0
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Removing : kernel-smp-devel ####################### [ 1/13]
Removing : kernel-hugemem-devel ####################### [ 2/13]
Removing : kernel-hugemem-devel ####################### [ 3/13]
Removing : kernel-hugemem-devel ####################### [ 4/13]
Removing : kernel-smp ####################### [ 5/13]
Removing : kernel-smp-devel ####################### [ 6/13]
Removing : kernel-smp-devel ####################### [ 7/13]
Removing : kernel-hugemem-devel ####################### [ 8/13]
Removing : kernel-smp ####################### [ 9/13]
Removing : kernel-smp ####################### [10/13]
Removing : kernel-smp ####################### [11/13]
Removing : kernel-smp-devel ####################### [12/13]
Removing : kernel-smp ####################### [13/13]

Removed: kernel-hugemem-devel.i686 0:2.6.9-55.0.6.EL kernel-hugemem-devel.i686 0:2.6.9-55.0.9.EL kernel-hugemem-devel.i686 0:2.6.9-55.0.2.EL kernel-hugemem-devel.i686 0:2.6.9-55.0.12.EL kernel-smp.i686 0:2.6.9-55.0.12.EL kernel-smp.i686 0:2.6.9-55.0.2.EL kernel-smp.i686 0:2.6.9-55.0.9.EL kernel-smp.i686 0:2.6.9-55.0.6.EL kernel-smp.i686 0:2.6.9-55.EL kernel-smp-devel.i686 0:2.6.9-55.0.2.EL kernel-smp-devel.i686 0:2.6.9-55.0.6.EL kernel-smp-devel.i686 0:2.6.9-55.0.9.EL kernel-smp-devel.i686 0:2.6.9-55.0.12.EL
Complete!

見事に消えたのでyumでupdateを実行してみた。

# yum update
Loading "fastestmirror" plugin

Setting up Update Process
Setting up repositories

update   100% =========================  951 B   00:00
base     100% =========================  1.1 kB  00:00
addons    100% =========================  951 B  00:00
extras     100% ========================= 1.1 kB 00:00
Determining fastest mirrors
Reading repository metadata in from local files
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package kernel.i686 0:2.6.9-89.0.18.EL set to be installed
--> Running transaction check
 
Dependencies Resolved
 
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
kernel i686 2.6.9-89.0.18.EL update 13 M
 
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 13 M
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing: kernel ######################### [1/1]

Installed: kernel.i686 0:2.6.9-89.0.18.EL
Complete!

大丈夫なようです。これでいいのか?まっいっか。
 

2009年12月22日火曜日

Active Directory 技術情報

Microsoftより「Active Directory TechCenter」がオープンしました。
今後充実していけば幅広い技術情報が得られそうです。

こちらからどうぞ。
 

2009年12月7日月曜日

BitNami::Redmine 0.8.7対応版

WindowsやMac等に簡単構築できるオールインワンタイプのRedmine

BitNami::RedmineがRedmine0.8.7に対応したようですね。

BITNAMIへはこちらからどうぞ。

2009年12月4日金曜日

Google日本語入力

Googleから日本語入力ソフトが公開されました。(ベータ版)
過去の変換結果を記憶して、再度同じような入力した場合に変換候補が出てくるサジェスト機能やすべての文字を入力しなくても、予測して変換候補が出きたりと日本語入力がとても楽になりそうです。また、URL入力時日本語入力のまま「hっtp:・・」と入力しても「http://」と自動的に変換されるようです。

対応OS
  • Windows 7 日本語版もしくは日本語を含む言語パック導入済の環境
  • Windows Vista SP1以降
  • Windows XP SP2以降(32bit版のみ)
  • Mac OS X 10.5以降
インストール


こちらからダウンロードサイトへ行けます。
※Beta版ですのでご利用は自己責任で行ってください。







「Google日本語入力を既定のIMEとして設定する」のチェックをONのままにしておき、ログオフ後そのまま利用することができます。言語バーはこのようになっていればGoogle日本語入力の使用状態です。



プロパティ
スパナアイコンをクリックしてプロパティーを見てみるとシンプルでわかりやすい構成です。




ローマ字入力・かな入力
日本語の入力方法として、ローマ字入力、かな入力の2種類から選択することができる。


句読点
句読点のフォーマットを変更することができる。


記号
カギ括弧などの記号のフォーマットを変更することができる。


スペースの入力
スペースの全角、半角表示を変更することができる。


候補選択ショートカット
文字入力の際、変換候補の横に表示されるショートカットを数字、アルファベットなどに変更することができる。


プライバシー
Google日本語入力がユーザの入力パターンから学習した単語や文字列を、一時的に変換候補に表示させたくない場合には、[シークレットモードを有効にする]のチェックをオンにする。再表示するにはチェックをオフにする。


キー設定
入力時のキー配置を、ATOK、MS-IMS、ことえりと同様に設定することができる。
キー設定をカスタマイズして利用するには、[カスタム]を選択、[編集]ボタンをクリックする。
画面左下の[+]ボタンをクリックすると、[モード][入力キー][コマンド]に新しいフィールドが追加される。


学習
ユーザの入力パターンを学習する機能を有効・無効にすることができる。学習機能を有効にすると、ユーザが選択した変換候補が上位に表示されるようになる。[学習(新規学習はしない)]をせんたくすると、この設定を行った以降の入力パターン学習が行わなくなる。
[学習履歴のクリア]ボタンを押すと、今までの学習履歴がすべて削除され、変換候補に表示されなくなる。


ユーザ辞書
ユーザ独自の辞書を作成することができる。[ユーザ辞書の編集]ボタンをクリック、[よみ]部分にひらがなでの読み方を、[単語]に登録したい単語を入力する。


その他の辞書


単漢字辞書
「あ」と入力すると「亜」と変換できるなどの設定を行うことが出来る。


記号辞書
「きごう」と入力すると「¬」と変換されるなどの設定を行うことができる。


日付変換を有効にする
「きょう」「あした」と入力すると、日付が変換候補に表示されるようになる。


数字変換を有効にする
「123」と入力すると、「壱百弐拾参」など様々なフォーマットで数字変換することができるようになる。


入力補助
[自動英数変換を有効にする]のチェックボックスを恩にすると、ひらがなで「hっtp:・・」と入力した際、「http://」に、また「hっtps:・・」と入力すると「https://」に、自動的に変換されるようになります。


半角・全角
特定に文字や記号を、変換時に全角または半角で表示するか指定することができます。
[変換前文字列]では、スペースキーで変換を確定する前にの文字や記号を、全角または半角で表示するよう指定します。
[変換中文字列]では、スペースキーを押して表示される変換候補のトップに、全角または半角で文字や記号を表示するように指定します。


各設定において、[学習]を選択すると、以前文字や記号を入力、変換した際の履歴をもとに、全角または半角で表示されるようになります。



サジェストの種類


入力履歴からのサジェスト自動表示を有効にする
この機能を有効にすると、ユーザが入力した単語や文章の履歴をもとに、入力途中でも的確と思われる変換候補を予測、サジェストとして表示します。


未使用の履歴を削除
ユーザの入力履歴に基づき表示されたサジェストの中でも、一度も変換候補として選択されなかったものを削除する。


全入力履歴を削除
これまでの入力履歴がすべて削除され、今まで入力履歴に基づき表示されていたサジェストも表示されなくなる。


サジェストの最大候補数
サジェストボックスに表示されるサジェストの数を指定することができる。




使用統計情報と障害レポート

障害レポート等をGoogleへ送信する場合には、チェックをオンにする。送信される情報は、OSバージョン情報、カスタマイズの設定情報、打鍵数などの統計情報、クラッシュレポートが送信されるが入力した文字列などの個人情報は送信されない。

既定のIME
Google日本語入力を既定のIMEとして設定するには、チェックをオンにする。
 

2009年11月26日木曜日

dovecot ダウン

メールが受信できない・・・ただし送信は問題なくできる。ん?
ということで調査開始。

・環境
CentOS5.4 + Postfix 2.3.3 + Dovecot 1.0.7

・原因
maillogを検索してみると・・・
Nov 26 04:01:49 mail01 dovecot:
Time just moved backwards by 13 seconds.
This might cause a lot of problems,
so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards

時刻が13秒戻りました。
これにより多くの問題を引き起こす可能性があります。
ですので、私は自分で死にます。http://wiki.dovecot.org/TimeMovedBackwards
こんなことが書かれていました。

とりあえず吐き出されているDovecot Wikiのリンク先http://wiki.dovecot.org/TimeMovedBackwardsを見てみたところ
  1. ntpdateを使っていますか?良くありません
  2. 仮想化環境を使用していますか?
と書かれていた。
このサーバは仮想環境ではないが、時刻合わせのスクリプト(ntpdateを使用)を1日1回実行されるようcron.daily内に配置している。ntpdateは一瞬にして時刻が修正されるので、これにより13秒戻ったということになる。ダウンした時刻とcron.dailyの時刻(4:02)がほぼ同じなので、これが原因のようです。

・解決方法
Dovecot Wikiによるとntpdを使用してください。とあるのでntpdサービスを使用して時刻同期を取るように変更します。
※ntpdの時間同期は、ずれを徐々に修正するような仕組みになっている。遅れているいる場合は刻み速度を早くして修正し逆に進んでいるときは刻みを遅くして修正するのでいきなり時刻がずれることはない。

インストール
# yum install ntp

設定
※タイムサーバとして稼動も可能だがとりあえず、ローカルホストの時刻同期専用とする。
# vi /etc/ntp.conf
-----------------------------------------------------------------------------
アクセス制御について
#restrict default kod nomodify notrap nopeer noquery   → コメント(IPv4)
#restrict -6 default kod nomodify notrap nopeer noquery  → コメント(IPv6)
restrict ignore → 追記(とりあえず全てのアクセスを拒否)

restrict 127.0.0.1 → ローカルホストは許可(IPv4)
#restrict -6 ::1 → ローカルホストは許可(IPv6) 使わないのでコメント

参照タイムサーバ
#server 0.centos.pool.ntp.org → コメント
#server 1.centos.pool.ntp.org → コメント
#server 2.centos.pool.ntp.org → コメント
server -4 ntp.nict.jp      → 追記(NICT)※-4 はIPv4
server -4 ntp.jst.mfeed.ad.jp → 追記(上記と同期されている)
server -4 ntp.ring.gr.jp    → 追記(Ring Server Project)

上記サーバがどれも応答しないときの参照先?よくわかりません
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
-----------------------------------------------------------------------------
 
restrictで始まる行は指定したホストに対してのNTPアクセスを制御します。またrestrictは最後の設定条件で有効になるので、最初に全拒否をして接続を許可していくスタイルになります。


  • ignore:全てのパケットを拒否
  • noquery:クエリーを拒否
  • nomodify:設定変更のクエリーを拒否
などがあるようです。詳しくはこちらを参照してください。

・起動
時刻差が大幅にあると起動できないため、一度手動で合わせる。
# ntpdate ntp.nict.jp
 
開始
# /etc/init.d/ntpd start
 
自動起動
# chkconfig ntpd on
# chkconfig --list ntpd
ntpd     0:off  1:off  2:on  3:on  4:on  5:on  6:off

・確認
# ntpq -p
 
 
 
 
 
 
remote列の左側にある"*"は同期中で、"+"がいつでも使用できることを表しています。
尚、開始後に同期するまで5~10分程度必要です。
これで時刻が急に変化することがなくなりましたので大丈夫でしょう。
 

2009年11月24日火曜日

Redmine アップデート(0.8.6→0.8.7)

CentOS5.4 + PostgreSQL 8.2.5の環境でアップデート
※MySQL環境でも同じ手順でOKです

まずはインストール先へ移動
# cd /home/redmine

レポジトリからチェックアウト
# svn update
U test/unit/helpers/application_helper_test.rb
U test/functional/timelog_controller_test.rb
U test/integration/admin_test.rb
U test/integration/account_test.rb
U app/controllers/timelog_controller.rb
U app/controllers/application.rb
U app/controllers/account_controller.rb
U app/views/wiki/export_multiple.rhtml
U app/views/wiki/export.rhtml
U config/initializers
U config/environments/test.rb
U config/environments/test_sqlite3.rb
U config/environments/test_pgsql.rb
U doc/INSTALL
U doc/CHANGELOG
U lib/redmine/version.rb
A lib/tasks/initializers.rake
U lib/redcloth3.rb
U public/themes/alternate/stylesheets/application.css
Updated to revision 3085.

マイグレーション
# rake db:migrate RAILS_ENV="production"
(in /home/redmine)
rake aborted!
Missing session secret. Please run 'rake config/initializers/session_store.rb' to generate one

(See full trace by running task with --trace)

あれ?失敗した模様・・・なにやらsession_store.rbを実行?
先にこれを実行するんですね。
# rake config/initializers/session_store.rb
(in /home/redmine)

再度マイグレーション
# rake db:migrate RAILS_ENV="production"
(in /home/redmine)

今度は大丈夫みたい

情報が以下のように変わりました。
Redmine 0.8.7.stable.3085 (PostgreSQL)
 

2009年11月20日金曜日

Windows Server 2008 R2 Standard

新しいHyper-V(2.0)を試すため2008 R2をとりあえずフルインストールで構築してみました。
ServerCoreの環境ではGUIによる役割追加ができませんのでフルインストールした方が簡単でお勧めです。

ハードウェア

  • 本体:Dell PowerEdge SC1435
  • CPU:AMD Opteron 2376(2.3GHz/6MB L3キャッシュ) × 2
  • メモリ:4GB(DDR2/667MHz 1GB×4)
  • HDD:160GB×2 RAID1構成(3.5インチSATAⅡ 7200RPM)


 
とりあえずOSは完了しました。
後日Hyper-Vを追加してCentOSでも入れてみることにしよう。
 

2009年11月16日月曜日

FortiGuard スパムデータベース

http://www.fortinet.co.jp/support/antispam.html

ここではIPアドレス、Eメールアドレス、メール本文中のURLなどでスパムのブラックリスト検索が行えます。



2009年11月13日金曜日

BitNami::Redmine 0.8.6対応版

WindowsPCに簡単構築できるオールインワンタイプのRedmine
BitNami::RedmineがRedmine0.8.6に対応したようですね。

Windows版はもちろんのことLinuxやMac用のインストーラもありますが、VMWare等で使用するVMDK形式の仮想マシンまで用意されておりOSはOpenSUSE 11.1で構成されているようです。

BITNAMIへはこちらからどうぞ。
 

2009年11月11日水曜日

バラクーダレピュテーションブロックリスト(BRBL)

セキュリティ製品の発売元でもあるバラクーダネットワークスが無料のDNSBLを提供しているみたいです。提供元が信頼できるのでこのDNSBLをPostfixで使ってみます。

もし使用する方は、くれぐれも自己責任でお願いします

無料ではあるがDNSの登録が必要ですのでまず登録をします。
http://www.barracudacentral.org/ を開き左側のメニューからBRLB>Request Accessを選択します。



Login Information(ログイン情報)
  • Email Address:ログインアカウント
  • Password:パスワード
  • Confirm Password:パスワードを再入力
Contact Information(メイン問い合わせ情報)
  • Name:(氏名)
  • Company:(会社名)
  • Address 1:(番地)
  • Address 2:(町名)
  • City:(市や区)
  • Country:(Japanを選択)
  • State/Province:(都道府県)
  • Zip/Postal Code:(郵便番号)
  • Phone Number:(電話番号 +81-****-****)
  • Alternate Email Address:(サブ連絡用E-Mailアドレス)
Alternate Contact Information(サブの問い合わせ情報)
※空はダメみたいです。面倒なのでメインと同じにしてしまいました。
  • Name:(氏名)
  • Phone Number:(電話番号 +81-****-****)
  • Email Address:(連絡E-Mailアドレス)
  • Alternate Email Address:(サブ連絡用E-Mailアドレス)
Access Information(アクセス情報)
  • IP Addresses:自前DNSサーバのIPアドレスを入力(複数あればカンマ区切りで10までOK)

It's OK to email me with BarracudaCentral.org updatesにチェックを入れsubmitを押します。

しばらくするとログイン情報で入力したメールアドレス宛に以下のようなメールが届きます。
-----------------------------------------
Hello,


Thank you for your interest in the Barracuda Reputation Block List (BRBL). Please click on the link below to verify the status of your account and to begin accessing the BRBL.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓このURLをクリックする↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://www.barracudacentral.org/account/verify/~/*********

The Barracuda Reputation System is a compilation of the most sophisticated IP analysis techniques and is one of 12 defense layers included in the Barracuda Spam Firewall. Click here to learn more.

Thank you,

BarracudaCentral.org
-----------------------------------------
 
これで登録は完了ですので使えるかテストしてみましょう。
 
設定するメールサーバ上で以下のコマンドを入力して結果を見ます。
$ host 2.0.0.127.b.barracudacentral.org
2.0.0.127.b.barracudacentral.org has address 127.0.0.2  ← 成功
  

以下のようならば失敗となります
Host 2.0.127.b.barracudacentral.org not found: 3(NXDOMAIN) ← 失敗
 
 
成功を確認後main.cfを編集
※当環境での設定ですので注意
# vi /etc/postfix/main.cf
smtpd_client_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 reject_rbl_client b.barracudacentral.org ← 追記
 permit
 
ログ(/var/logs/maillog)
 postfix/smtpd[24805]: NOQUEUE: reject: RCPT from unknown[**.**.***.**]: 554 5.7.1 Service unavailable; Client host [**.**.***.**] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=**.**.***.**; from=root@sample.com to= proto=ESMTP helo=<[**.**.***.**]>
postfix/smtpd[24805]: disconnect from unknown[**.**.***.**]
 

2009年11月10日火曜日

Redmine アップデート(0.8.3→0.8.6)

Redmine 0.8.6がリリースされてました。
当環境ではSubversionリポジトリからのチェックアウトしているので、Subversionリポジトリから更新します。(CentOSに構築した手順はこちらです)

まずredmineのソースが配置されているディレクトリに移動します。(当環境では/home/redmine)
#cd /home/redmine/

svnコマンドで更新ファイルを取得
# svn update
U test/unit/helpers/application_helper_test.rb
U test/unit/mail_handler_test.rb
U test/unit/query_test.rb
U test/functional/issues_controller_test.rb
U test/functional/news_controller_test.rb
U test/functional/account_controller_test.rb
U test/functional/projects_controller_test.rb
A test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml
U test/fixtures/journals.yml
U test/fixtures/users.yml
U test/fixtures/attachments.yml
U app/helpers/application_helper.rb
U app/models/mail_handler.rb
U app/models/query.rb
U app/models/changeset.rb
G app/controllers/issues_controller.rb
U app/controllers/timelog_controller.rb
U app/controllers/messages_controller.rb
U app/controllers/news_controller.rb
U app/controllers/account_controller.rb
U app/controllers/wiki_controller.rb
U app/views/journals/_notes_form.rhtml
U app/views/users/_memberships.rhtml
U app/views/versions/show.rhtml

データベースのマイグレーション(テーブル作成)
# rake db:migrate RAILS_ENV="production"
(in /home/redmine)

キャッシュのクリア
# rake tmp:cache:clear
(in /home/redmine)

セッションのクリア
# rake tmp:sessions:clear
(in /home/redmine)

Apacheを再起動

Redmineにログインして「管理」>「情報」を開きます。
Redmine 0.8.6.stable.3023 (MySQL)となりました。
※DBにPostgreSQLが使用されているときはRedmine 0.8.6.stable.3023 (PostgreSQL)となる。
 

2009年11月6日金曜日

PostfixによるtaRgrey その2

その1からの続きです。

その1ではPostfixの基本構築が完了、これからtaRgreyの設定を行っていきますが、taRgreyでは S25R+tarpitting+greylisting というスパム判定手法を組み合わせて使います。S25Rにて動的IPらしき場合は怪しいと判断してtarpitting(指定時間の遅延処理)を行います。待ちきれず接続を切断されてもすぐにはsmtpdプロセスが終了しません。遅延中に相手が接続を切ったらsmtpdプロセスもすぐに終了するようにPostfixにパッチを適用します。

Postfixのパッチ(メモリ消費を抑える効果がある)
PostfixのSRPM(ソースファイル)をyumからダウンロードするためyum-utilsをインストール
# yum install yum-utils

yumのBaseレポジトリに追記
# vi /etc/yum.repos.d/CentOS-Base.repo
 [base-source]
 name=CentOS-$releasever - Base Source
 baseurl=http://mirror.centos.org/centos/$releasever/os/SRPMS/
 gpgcheck=1
 enabled=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 
 [updates-source]
 name=CentOS-$releasever - Updates Source
 baseurl=http://mirror.centos.org/centos/$releasever/updates/SRPMS/
 gpgcheck=1
 enabled=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

 [extras-source]
 name=CentOS-$releasever - Extras Source
 baseurl=http://mirror.centos.org/centos/$releasever/extras/SRPMS/
 gpgcheck=1
 enabled=1
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5


PostfixのSRPMダウンロード
# yumdownloader --noplugins --source postfix

SRPMの展開
# rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm (警告が出るが気にしない)

SRPM展開先ディレクトリへ移動
# cd /usr/src/redhat/SOURCES/

ソースの展開
# tar zxvf postfix-2.3.3.tar.gz

展開ディレクトリへ移動
# cd postfix-2.3.3

パッチのダウンロード
# wget http://k2net.hakuba.jp/pub/postfix-sleep.patch

パッチの適用
# patch -p1 < postfix-sleep.patch

上位ディレクトリへ移動
# cd ../

ソースの再アーカイブ化(パッチを適用する前のソースを削除してから再アーカイブ)
# rm -rf postfix-2.3.3.tar.gz && tar czvf postfix-2.3.3.tar.gz postfix-2.3.3

ソース展開先ディレクトリを削除
# rm -rf postfix-2.3.3

ホームディレクトリへ
# cd

PostfixのRPMパッケージを作成
# rpmbuild -bb --clean --define "dist .`echo postfix-*.src.rpm |awk -F. '{print $(NF-2)}'`" /usr/src/redhat/SPECS/postfix.spec
※1行で記述する

作成したRPMパッケージをインストール(アップデート)
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/postfix-2.3.3-2.1.el5_2.i386.rpm

ソースファイル、specファイルの削除
# rpmbuild --rmsource --rmspec /usr/src/redhat/SPECS/postfix.spec

作成したRPMパッケージの削除
# rm -rf /usr/src/redhat/RPMS/i386/postfix-*

ダウンロードしたSRPMの削除
# rm -rf postfix-2.3.3-2.1.el5_2.src.rpm


Postgreyのインストール

PostgreyのSRPMダウンロード
# wget http://apt.sw.be/redhat/el5/en/SRPMS.rpmforge/postgrey-1.32-1.rf.src.rpm

SRPMの展開
# rpm -ivh postgrey-1.31-1.rf.src.rpm(警告が出るが気にしない)

SRPM展開先ディレクトリへ移動
# cd /usr/src/redhat/SOURCES/

ソースの展開
# tar zxvf postgrey-1.32.tar.gz

展開ディレクトリへ移動
# cd postgrey-1.32

パッチをダウンロード(postgreyのバージョンに注意)
# wget http://k2net.hakuba.jp/pub/targrey-0.31-postgrey-1.32.patch

パッチの適用
# patch -p0 < targrey-0.31-postgrey-1.32.patch

上位ディレクトリへ移動

# cd ../

ソースの再アーカイブ化(パッチを適用する前のソースを削除してから再アーカイブ)
# rm -f postgrey-1.32.tar.gz && tar czvf postgrey-1.32.tar.gz postgrey-1.32

ソース展開先ディレクトリを削除
# rm -rf postgrey-1.32

ホームディレクトリへ
# cd

PostgreyのRPMパッケージを作成
# rpmbuild -bb --clean /usr/src/redhat/SPECS/postgrey.spec

Postgrey依存パッケージをインストールためrpmforgeリポジトリを利用
# rpm-ivh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yumで自動updateされないよう制御
# vi /etc/yum.repos.d/rpmforge.repo
 enabled = 1 ← 0に変更する

依存パッケージのインストール(Postgreyをインストールして即削除)
# yum -y --enablerepo=rpmforge install postgrey && rpm -e postgrey
 
作成したPostgreyのRPMパッケージをインストール
# rpm -ivh /usr/src/redhat/RPMS/noarch/postgrey-1.32-1.rf.noarch.rpm
 
作成したRPMパッケージの削除
# rm -rf /usr/src/redhat/RPMS/i386/postgrey-*

ダウンロードしたSRPMの削除
# rm -rf postgrey-1.31-1.rf.src.rpm

taRgreyの解説ページから設定例を取得
# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
# tar zxvf postfix.conf.2.tar.gz

一部のファイルをコピー
# cp postfix.conf.2/whitelist_recipient /etc/postfix/

# cp postfix.conf.2/whitelist_client /etc/postfix/
# cp postfix.conf.2/permit_client_nots25r /etc/postfix/

whitelist_recipient とwhitelist_client はDB参照となるためDB化
# postmap /etc/postfix/whitelist_recipient

# postmap /etc/postfix/whitelist_client

DBがあるか確認
# ls /etc/postfix
whitelist_client.db     whitelist_recipient.db (この2つを確認)

Postfixの設定変更

Postfixの設定変更
# vi /etc/postfix/main.cf
 smtpd_recipient_restrictions =
  permit_mynetworks
  reject_unauth_destination
  reject_non_fqdn_recipient
  check_recipient_access hash:$config_directory/whitelist_recipient ← 追記
  check_client_access hash:$config_directory/whitelist_client ← 追記
  check_client_access regexp:$config_directory/permit_client_nots25r ← 追記
  check_policy_service inet:60000 ← 追記

#以下全文追記
smtpd_data_restrictions =
  permit_mynetworks
  reject_unauth_destination
  check_recipient_access hash:$config_directory/whitelist_recipient
  check_client_access hash:$config_directory/whitelist_client
  check_client_access regexp:$config_directory/permit_client_nots25r
  check_policy_service inet:60000
  permit


main.cfの入力を終了します。

※解説
smtpd_recipient_restrictionsでの一度目のcheck_policy_serviceでtarpittingを掛け、一旦tarpittingブラックリストに登録されます。

tarpittingを抜けた接続はsmtpd_data_restrictionsまで渡ってくるため、再度check_policy_serviceで呼び出し、tarpittingのブラックリストから削除します。
tarpittingのブラックリストに入っているIPからの接続から再送された場合、tarpittingの処理には回さずに、greylistingの処理に回ります。



Postgreyの起動モードを指定(taRgreyモード 125秒)
# vi /etc/init.d/postgrey
 #OPTIONS="--unix=$SOCKET" ← コメント化
 OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600"

Postgreyの起動
# /etc/init.d/postgrey start

Postgreyの自動起動
# chkconfig postgrey on

Postfixの再起動
# /etc/init.d/postfix restart

Postfixがyum cronで自動アップデートしないよう制御
# vi /etc/yum.conf
 [main]内に以下を記述する
 exclude=postfix*


以上でtaRgreyの環境は完了です。

 

PostfixによるtaRgrey その1

自前のメールサーバが負荷に耐え切れなくなり?頻繁にカーネルパニックを起こすようになってしまった。スペックの低いこともあり新たにDell R610を購入して再構築しました。

スパム対策として今まで特定の国からのパケット破棄・Rgrey(S25R + greylisting)でしたが、今回はtaRgrey(S25R + tarpitting + greylisting)でスパム対策することにしました。
※RgreyやtaRgreyについての説明は省きます。詳しくはこちらを参照してください。
アンチウイルス等ファイアウォールについてはFortiGateで行うためここでは考慮しません。

ハードウェア
  • 本体:Dell PowerEdge R610
  • CPU:Intel(R) Xeon E5502(1.86GHz)
  • メモリ:4GB(DDR3 2GB×2)
  • HDD:146GB×2 RAID1構成(2.5インチSAS 10000RPM) ※ホットプラグ対応
  • 電源:717W
ソフトウェア
  • OS:CentOS-5 (5.4)
  • SMTP:Postfix(2.3.3)
  • POP:Dovecot(1.0.7) ※IMAP対応
  • その他:Postgrey(1.32)
メール使用ユーザには/home/UserName/の下にMaildirディレクトリが必要となります。メールユーザ追加するたびMaildirを手動で作成するのは面倒なので、ユーザが追加されたと同時にメールディレクトリを作成するようにしておきます。
# mkdir /etc/skel/Maildir
# chmod 700 /etc/skel/Maildir
初回送受信時にMaildirの配下にNew(新着メール)、Cur(既読メール)、Tmp(配送中メール)が作られます。

Postfixのインストール
# yum install postfix

設定ファイル編集(変更や追記部分のみ表記)
# vi /etc/postfix/main.cf

FQDN形式でのホスト名(DNSで名前解決できるもの)
myhostname = mail.exsmple.com

自身のドメイン名
mydomain = exsmple.com

ローカルから発せられるメールのUserName@以降に付与
myorigin = $myhostname

待ち受けるネットワーク(ローカル、LANなど全て)
inet_interfaces = all

ローカルで受信するドメイン名およびそのサブドメイン(必要に応じてカンマ区切りで追記)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, www.$mydomain

ローカルで受信するユーザの存在マッピング
local_recipient_maps = unix:passwd.byname $alias_maps

ローカルのユーザが存在しないときのエラー
※安定するまで450(再送信依頼)で対応、その後は550(存在しません)で拒否するのがよい。
450で返すと正常なMTAは30分後ぐらいに送信してくる。
unknown_local_recipient_reject_code = 450

権限の与えられるクライアントネットワーク定義(接続や中継を許可するなどに利用)
mynetworks = 10.1.0.0/16, 127.0.0.0/8

メールのリレーを許可するドメインおよびそのサブドメイン
relay_domains = $mydestination

メールボックスの形式
home_mailbox = Maildir/  ※スラッシュを付け忘れないこと

ヘッダチェックなどの制限等をする定義ファイル(後でheader_checksファイルを編集)
header_checks = regexp:/etc/postfix/header_checks

メールサーバソフトの隠蔽化
smtpd_banner = ESMTP unknown

ここまでが基本設定となります。
このままでも稼動させることができますが、セキュリティ強化の設定を追記していきます。

vrfyコマンドを無効(ユーザが存在するかどうか問い合わせをさせない)
disable_vrfy_command = yes

HELO(EHLO)コマンドで自己紹介を要求(ホスト名を通知しない接続を拒否する)
smtpd_helo_required = yes

RFC821の形式に合わないアドレスは拒否
strict_rfc821_envelopes = yes

HELOコマンドの場面で適用される制限
smtpd_client_restrictions =
permit_mynetworks           mynetworksで定義したネットワークは許可
reject_rbl_client bl.spamcop.net    外部ブラックリストに登録されている接続先は拒否
permit                  それ以外は許可

SMTP HELO(EHLO)コマンドの場面で適用される制限
smtpd_helo_restrictions =
permit_mynetworks           mynetworksで定義したネットワークは許可
reject_unknown_hostname       ホスト名のDNSでAまたはMXレコードない場合は拒否
reject_invalid_hostname         ホスト名の文法が不正の場合は拒否
reject_non_fqdn_hostname       ホスト名がFQDN形式ではない場合に拒否

  ※reject_unknown_hostname、reject_invalid_hostname、reject_non_fqdn_hostnameについては正常なホストでも"DNSで解決できない" "FQDN形式ではない"場合が多いため適用しないほうがよいと思われます。

SMTP Mail Fromコマンドの場面で適用される制限
smtpd_sender_restriction =
reject_non_fqdn_sender      送信者メールアドレスがFQDN形式でない場合は拒否           
reject_unknown_sender_domain 送信者メールアドレスのドメインが存在しない場合は拒否
permit                それ以外は許可

RCPT TOコマンドの場面で適用される制限
smtpd_recipient_restrictions =
permit_mynetworks        mynetworksで定義したネットワークは許可
reject_non_fqdn_recipient    受信者メールアドレスがFQDN形式でない場合は拒否
reject_unauth_destination     受信者メールアドレスがmydestinationに属さない宛先は拒否

main.cfの入力を終了します。

header_checksファイルの編集(追記)
# vi /etc/postfix/header_checks

ヘッダのReceived部分を非表示
/^Received:/ IGNORE

大量送信用特殊メーラーからのメールを拒否(他にも色々あります)
/^X-Mailer:.*PostMaster General/ REJECT

GMTを利用して特定地域からのメールを拒否
例)ブラジル(フェルナンド ノローニャ諸島)地域
/^Date:.*-1100/ REJECT

header_checksの入力を終了します。

CentOSではMTAのデフォルトがsendmailのためデフォルトMTAをPostfixへ切り替えます。
まずsendmailを止めて自動起動しないようにします。
# /etc/init.d/sendmail stop
# chkconfig sendmail off
# alternatives --config mta
There are 2 programs which provide 'mta'.

Selection Command
-----------------------------------------------
* + 1 /usr/sbin/sendmail.sendmail ← 現在sendmailがMTAとなっている
2 /usr/sbin/sendmail.postfix ← postfixもあり
Enter to keep the current selection[+], or type selection number:2 ←2を入力

Postfixの起動
#/etc/init.d/postfix start

Postfixの自動起動を有効にする
# chkconfig postfix on
# chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off ※2,3,4,5がONになっていれば問題なし

Postfixの基本環境は完了です。
その2でPostgrey等のインストール・設定を行います。

その2へ

2009年11月4日水曜日

DELL R610 RAIDドライバ

CentOS5 にてSAS 6/iR Integratedのドライバをアップデートします。

DELLから新しいドライバをダウンロードします。
# wget http://ftp1.us.dell.com/sas-raid/R211003-mptlinux-4.00.38.02-3.tar.gz
# tar zxvf R211003-mptlinux-4.00.38.02-3.tar.gz
dkms-2.0.19.1-1.noarch.rpm
mptlinux-4.00.38.02-3dkms.noarch.rpm
mptlinux-4.00.38.02-src.tar.gz
mptlinux-4.00.38.02.txt

DKMSパッケージとドライバをインストールします。
※DKMS (Dynamic Kernel Module Support) は、カーネルのアップグレード時にモジュールを簡単に再構築するために設計されています。この再構築のために、カーネルに依存するモジュール ソースが常駐できるフレームワークを作成します。
# rpm -ivh dkms-2.0.19.1-1.noarch.rpm
warning: dkms-2.0.19.1-1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 23b66a9d

Preparing... ########################################### [100%]
1:dkms ########################################### [100%]
 
# rpm -ivh mptlinux-4.00.38.02-3dkms.noarch.rpm
Preparing... ########################################### [100%]
 1:mptlinux ########################################### [100%]
Creating symlink /var/lib/dkms/mptlinux/4.00.38.02/source ->
 /usr/src/mptlinux-4.00.38.02
DKMS: add Completed.
Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.
現在使用中のドライバがあるため再起動が必要です。

# shutdown -r now

新しいカーネルにアップグレードする場合は、DKMS が有効に設定されたドライバパッケージを再インストールする必要があるため以下のコマンドを使います。
dkms build -m <モジュール名> -v <モジュールのバージョン> -k <カーネルのバージョン>
dkms install -m <モジュール名> -v <モジュールのバージョン> -k <カーネルのバージョン>

# dkms build -m mptlinux -v 4.00.38.02 -k 2.6.18-164.el5 --kernelsourcedir=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i386/
# dkms install -m mptlinux -v 4.00.38.02 -k 2.6.18-164.el5 --kernelsourcedir=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i386/

# modinfo mptsas
filename: /lib/modules/2.6.18-164.el5/extra/mptsas.ko

version: 4.00.38.02
license: GPL
description: Fusion MPT SAS Host driver
author: LSI Corporation
srcversion: E51EE0D539AEBDC23494300
alias: pci:v00001000d00000062sv*sd*bc*sc*i*
alias: pci:v00001000d00000058sv*sd*bc*sc*i*
alias: pci:v00001000d00000056sv*sd*bc*sc*i*
alias: pci:v00001000d00000054sv*sd*bc*sc*i*
alias: pci:v00001000d00000050sv*sd*bc*sc*i*
depends: mptscsih,mptbase
vermagic: 2.6.18-164.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
parm: mpt_pt_clear: Clear persistency table: enable=1 (default=MPTSCSIH_PT_CLEAR=0) (int)
parm: mpt_cmd_retry_count: Device discovery TUR command retry count: default=144 (int)
parm: mpt_disable_hotplug_remove: Disable hotpug remove events: default=0 (int)
parm: mpt_sdev_queue_depth: Max Device Queue Depth (default=64)
parm: max_lun: max lun, default=16895 (int)

# dkms status
mptlinux, 4.00.38.02, 2.6.18-164.el5, i686: installed (original_module exists)
mptlinux, 4.00.38.02, 2.6.18-164.2.1.el5, i686: installed-weak from 2.6.18-164.el5

2009年10月30日金曜日

Centos 5.4 + Dell R610 にOMSAをインストール

DELL OMSA(OpenManage Server Administrator)
モニタリングツールでハードウェアの状態などがWebブラウザで確認できるツールです。

インストールはとても簡単で、まずはレポジトリを追加しOMSAをインストールするだけです。

1.レポジトリの追加(root権限が必要)
 # wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi  | bash

2.インストール
 # yum install srvadmin-all

※インストールの場所は/opt/dell/srvadmin/になります。

3.レポジトリの調整(勝手にupdateされないよう無効にしておく)
 # vi /etc/yum.repos.d/dell-omsa-repository.repo
  enabled=1→0に書き換える

完了!

https://サーバアドレス:1311/にアクセスしてrootでログインします。
※デフォルトではSSLで接続してポート1311です。






OMSAのアンインストール方法

yum remove srvadmin-allではアンインストールできません。
アンインストール専用のスクリプトがありますので、それを使います。

# /opt/dell/srvadmin/omil/supportscripts/srvadmin-uninstall.sh
または
# /usr/bin/srvadmin-uninstall.sh

実行すると対象パッケージ一覧が表示されアンインストールしてよいか聞いてきますので、yesを指定してアンインストール完了となります。

srvadmin-omcommon-6.1.0-648
srvadmin-idrac-components-6.1.0-648
srvadmin-racsvc-6.1.0-648
srvadmin-rac4-components-6.1.0-648
srvadmin-storage-6.1.0-648
srvadmin-racdrsc5-6.1.0-648
srvadmin-idracadm-6.1.0-648
srvadmin-standardAgent-6.1.0-648
srvadmin-omilcore-6.1.0-648
srvadmin-hapi-6.1.0-648
srvadmin-syscheck-6.1.0-648
srvadmin-omacore-6.1.0-648
srvadmin-isvc-6.1.0-648
srvadmin-cm-6.1.0-648
srvadmin-racadm4-6.1.0-648
srvadmin-wsmanclient-6.1.0-648.rhel5
srvadmin-racdrsc4-6.1.0-648
srvadmin-base-6.1.0-648
srvadmin-storageservices-6.1.0-648
srvadmin-rac5-components-6.1.0-648
srvadmin-jre-6.1.0-648
srvadmin-webserver-6.1.0-648
srvadmin-idrac-6.1.0-648
srvadmin-rac5-6.1.0-648
srvadmin-ssa-6.1.0-648.rhel5
srvadmin-deng-6.1.0-648
srvadmin-omhip-6.1.0-648
srvadmin-omauth-6.1.0-648.rhel5
srvadmin-rac4-6.1.0-648
srvadmin-idracdrsc-6.1.0-648
srvadmin-iws-6.1.0-648
srvadmin-racadm5-6.1.0-648
Are you sure you want to uninstall?
 Press ('y' for yes | 'Enter' to exit):y ← yを入力してenterキー
 Uninstalling Server Administrator.
 
Uninstalled Successfully.


レポジトリの削除

# rpm -qa | grep dell-omsa
dell-omsa-repository-2-5

# yum remove dell-omsa-repository-2-5

※/etc/yum.repos.d/dell-omsa-repository.repoは残ります。

以上で完了です。


ストレージ>SAS 6/iR Integrated(RAIDコントローラ)で警告が・・・ドライバが古すぎる・・・。
正常に稼動していると思われるのでこのままでも良い気がするがなんか気持ち悪い。
後日解決するとしよう。

参考サイト:http://linux.dell.com/repo/hardware/latest/
 

2009年10月28日水曜日

AD (Active Directory) リストア

複数台のドメイン コントローラにて Active Directory ドメインを運用している場合には、ドメイン内の全てのドメイン コントローラにて、Active Directory データベースの複製が正常に行われている必要があります。しかし、例えば予期せぬ電源ダウンによって Active Directory データベースが破損してしまい、ドメイン コントローラ間の複製が正常に行われなくなってしまった場合、どのようにドメイン コントローラを復旧すればよいのでしょうか?


このような場合に、複製障害が発生しているドメイン コントローラを復旧するには、バックアップ データからリストアする方法と、問題のドメイン コントローラを再昇格する方法の二つが考えられます。また、再昇格によってドメイン コントローラを復旧する際には、強制降格を実施した後、ドメイン内の任意のドメイン コントローラの 1 台にて、メタデータ クリーンナップ作業を行い、その上で再昇格を行う必要があります。

こちらで動画紹介されています。
 

2009年10月23日金曜日

CentOS 5.4 リリース

2009年10月22日にi386とx86_64がリリースされました。
i386ではLiveCDも同時リリースされましたが、x86_64はリリースされませんでした。
x86_64のLiveCDは32bitもサポートするようでその分サイズがかなり大きくCD1枚では収まりきれない様子です。
LiveDVDでもいいんじゃないでしょうかね~
 
既に構築しているCentOS5.3などは26日までにはyumでupdateできるようになるようです。
 
リリースに関する情報はこちらを参照してください。
 

2009年10月15日木曜日

FortiClient 完全無償化

FotiClientがStandard EditionとPreminum Editionの2つになり、名称もFortiClient Endpoint Securityとなりました。ダウンロードフリーでStandard Editionは一部機能を制限した無償バージョンです!しかも各パターンファイルはFortinet社から直接ダウンロードするのでFortiGateを導入することなく単体でクライアント総合セキュリティソフトとして稼働させることができます。

使用ライセンスに制限もなく商用利用も可能だというので企業でも安心して使用できます。
FortiGate自体が企業向けという観点からおそらく宣伝目的だと思われますが・・・。


エディション比較
機能
概要
Standard
Preminum
アンチウイルス/アンチスパイウェア
ウイルス、スパイウェア、キーロガー、トロイの木馬などから総合的に保護


ファイアウォール/VPN
ファイアウォールによる侵入検知、SSL及びIPsecVPN


Webフィルタリング
有害サイトやWebメールなどへのアクセスを制御可能


アプリケーション検知/WAN最適化
FortiGate(FortiOS 4.0)と連携してWANの高速化及びアプリケーション及び検知・制御


アンチスパム
Windows PCのためのMicrosoft Outlook/Outlook expressと連携のアンチスパム
×

集中管理機能
FortiManagerを使ったクライアントの集中管理、集中ロギング
×

エンドポイント制御
FortiGate(FortiOS 4.0)と連携してエンドポイントのセキュリティ




Preminum Editionの価格
ライセンス数
定価(1年)
更新(1年)

¥14,000
¥6,000
2~9
¥9,900
¥3,600
10~24
¥9,000
¥3,100
25~99
¥8,200
¥2,800

●対応OS
  • Windows 2000
  • Windows XP
  • Windows Vista
  • Windows 7
  • Windows Server 2003
  • Windows Server 2008
  ※それぞれ32bit/64bitに対応しています。

Windows Server系でフリーのアンチウイルスが非常に少ないので重宝するのでは・・・
ダウンロードはこちらからどうぞ。
32bit版は「Download Now」からですが、64bit版はページ下の「DOWNLOAD FortiClient for Windows 64-bit」となります。注意してください。
 

FTPサーバの構築

壊れかかっているFTPサーバを再構築した。その時の構築とデータ移行手順です。

指定ユーザのみがログインしてアップロードやダウンロードが行えるようにします。またChroot対応にしてユーザのホームディレクトリ(public_html)より上位ディレクトリには移行できないようにする。
  • CentOS 5.3
  • vsftpd-2.0.5-12.el5_3.1
【事前準備】
接続ユーザにシェルを使わせないようにするため架空のシェルを登録しておく。
shellsファイルに「/bin/login」の1行を追記する。
# vi /etc/shells
 /bin/login

chroot対応のユーザは/etc/localtimeの参照ができなくなるため時刻が狂うことがある。これを防ぐためユーザディレクトリの直下にetcディレクトリを作成してetcのlocaltimeファイルをコピーしてユーザ用localtimeファイルを設置するようにする。
ユーザ追加時に毎回public_htmlやlocaltimeを作るのは面倒なので、ユーザ追加と同時にこれらが作られるようにしておく。
# mkdir /etc/skel/public_html
# mkdir /etc/skel/etc
# cp /etc/localtime /etc/skel/etc

ユーザの追加とパスワードを設定する。(架空のシェルを割り当てるのでログインしても実質シェルは使えない)
# useradd -s /bin/login hoge
# passwd hoge

ユーザのホームディレクトリとlocaltimeの場所確認
/home/hoge/public_html
/home/hoge/etc/localtime

【インストール】
yumを使いRPMパッケージ版をインストールします。
# yum install vsftpd

【設定1】
confファイルを編集します。各項目は"オプション名=値"というスタイルですが、=(イコール)の前後にスペース等空白は入れないようにしてください。
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org (オリジナルを保存)
# vi /etc/vsftpd/vsftpd.conf

#ログインを必要とするため匿名ログインを許可しない
anonymous_enable=NO

#ローカルユーザのログインを許可する
local_enable=YES

#書き込みを許可する
write_enable=YES

#作成したディレクトリやアップロードしたファイルのパーミッションをログインユーザ限定にする
#Webのアップロード用に使いたいときは755になるように022を指定する
#計算方法:777(フル権限)-077(マスク)=700(設定権限)
local_umask=077

#ユーザーがメッセージファイルを持つディレクトリに入った時に、メッセージを表示する
#特に使いません
dirmessage_enable=NO

#ログ関連
xferlog_enable=YES
xferlog_file= /var/log/vsftpd.log
xferlog_std_format=NO

#転送用ポートを指定する
connect_from_port_20=YES

#アスキーモードを許可する
ascii_upload_enable=YES
ascii_download_enable=YES

#接続が確立された時点での情報表示を隠蔽する
ftpd_banner=unkown.

#chroot_listでchroot除外ユーザ(ホームディレクトリより上位へ移動可)を記述する
#ホームディレクトリをpublic_htmlとする
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_root=public_html

#ディレクトリ単位での削除やアップロードを許可する
ls_recurse_enable=YES

#スタントアロンモードで起動させる
listen=YES

#サービス名の指定
pam_service_name=vsftpd

#ユーザ制限
#接続許可を/vsftpd/user_listに記述してあるユーザに限定する
#/vsftpd/ftpusersに記述してあるユーザは無条件に接続を拒否する
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

#タイムゾーンをローカルのものを使用する
use_localtime=YES

#ドットファイル(.から始まる隠しファイル)は表示させない
force_dot_file=NO

上記以外にも様々な設定できます。詳しくはこちらを参考にしてください。

【設定2】
無条件に拒否するユーザを記述する(1ユーザ1行に記述するようにします)
/etc/passwordを参考にシステム系ユーザをすべて記述する(任意)
# vi /etc/vsftpd/ftpusers
 # Users that are not allowed to login via ftp

 root
 bin
 daemon
 adm
 lp
 sync
 shutdown
 halt
 mail
 news
 uucp
 operator
 games
 nobody
 gopher
 ftp
 rpc
 mailnull
 smmsp
 nscd
 vcsa
 sshd
 rpcuser
 nfsnobody
 pcap
 dbus
 haldaemon
 avahi
 avahi-autoipd
 xfs
 ntp

ログイン許可するユーザを記述する(1ユーザ1行に記述するようにします)
デフォルトでシステム系のユーザが記述されていますのですべて削除または行頭に#を付けます。
ここでは最初に追加したユーザhogeを許可しています。
# vi /etc/vsftpd/user_list
 # vsftpd userlist

 # If userlist_deny=NO, only allow users in this file
 # If userlist_deny=YES (default), never allow users in this file, and
 # do not even prompt for a password.
 # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
 # for users that are denied.
 #root
 #bin
 #daemon
 #adm
 #lp
 #sync
 #shutdown
 #halt
 #mail
 #news
 #uucp
 #operator
 #games
 #nobody
 hoge

chroot除外者用リストの作成
# vi /etc/vsftpd/chroot_list
 ※chroot除外するユーザを記述する(1ユーザ1行に記述するようにします)

【起動設定】 
起動
# /etc/init.d/vsftpd start

自動起動
# chkconfig vsftpd on
ランレベル確認
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

【データ移行】
さてここから旧サーバからデータを移行します。ただ単に移行するだけではなく、タイムスタンプをそのまま引き継ぐようにしたいと思います。
※移行元もvsFTPDで構築されており設定もほぼ同じ構成になっています。
  • 移行元サーバIP 192.168.0.5
  • 移行先サーバIP 192.168.0.6
【移行元192.168.0.5での作業】
ユーザごとにデータ(public_html以下)をアーカイブして圧縮します。
サーバにログイン(ssh等)してrootになります。
# cd /home/hoge
# tar cvzf hoge_backupdata.tar.gz ./public_html/*
# ls -al
total    9860100

drwx------        5 hoge hoge                  4096 Oct 15 12:45 .
drwxr-xr-x    138 root root                    4096 Sep 11 19:34 ..
-rw-r--r--         1 hoge hoge                      24 Dec 21 2004 .bash_logout
-rw-r--r--         1 hoge hoge                    191 Dec 21 2004 .bash_profile
-rw-r--r--         1 hoge hoge                    124 Dec 21 2004 .bashrc
-rw-r--r--         1 hoge hoge                    383 Dec 21 2004 .emacs
drwxr-xr-x        2 hoge hoge                  4096   Jul   2 2005 etc
drwx------        6 hoge hoge                  4096 Sep 14 21:05 Maildir
-rw-r--r--         1 root root      10086831455 Oct 14 19:59 hoge_backupdata.tar.gz
drwxr-xr-x     85 hoge hoge                   4096 Oct 15 12:45 public_html

FTPのホームディレクトリに移動する。
# mv ./hoge_backupdata.tar.gz ./public_html

【移行先192.168.0.6での作業】
サーバにログイン(ssh等)してrootになります。
FTPコマンドを使用して移行元サーバにログインします。
# ftp 192.168.0.5
Connected to 192.168.0.5.

220 unknown.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.5:root):hoge ← 移行元サーバのユーザ
331 Please specify the password.
Password: ← パスワード入力
230 Login successful.

Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ログインが成功しました。もし以下のようなメッセージが表示された場合はログインに失敗ですのでftpコマンドから抜けて再度ログインをします。
530 Login incorrect.

Login failed.
ftp> quit
# もう一度”ftp 192.168.0.5”でログインを試みます。
 
移行元サーバで作成したアーカイブデータをダウンロードします。
ftp>get hoge_backupdata.tar.gz
    ・
    ・
ftp>quit
移行先のpublic_html(/home/hoge/public_html)ディレクトリを削除します。
※public_htmlの中身があるときは事前にバックアップを取っておきます。
# tar zxvf  hoge_backupdata.tar.gz
 
解凍後public_htmlが出来上がりますのでパーミッション等を変更して完了です。
# chown -R hoge.hoge ./public_html
# chmod -R 700 ./public_html
 

2009年10月14日水曜日

カーネルパニック

社内用としてちょい古いCentOSサーバでFTPを動かしているのですが最近kernel panicで接続できなくなる・・・
新サーバ立ち上げまで頑張ってもらうためkernel panicを起こしたら自動的に再起動するようしました。

カーネルパニックを検知したら5秒後に強制的に再起動するようrc.localファイルに以下の1行を追記して再起動します。

# vi /etc/rc.local
echo 5 > /proc/sys/kernel/panic
 

2009年9月30日水曜日

BitNami::Redmine 0.8.5対応版

以前プロジェクト管理で紹介したWindowsPCにも構築できるオールインワンタイプのBitNami::RedmineがRedmine0.8.5に対応したようですね。

こちらからどうぞ。
 

2009年9月17日木曜日

Apache configure エラー

CentOS5.3にApacheをソースからインストールしようとしたらconfigureでエラーが発生した。

# tar zxvf  httpd-2.2.13.tar.gz
# cd httpd-2.2.13
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=all
  ・
  ・
  ・
checking whether to enable mod_deflate... checking dependencies
checking for zlib location... not found
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures

mod_deflateモジュールで条件が満たされていないため構築できないと言われてしまった。ということでzlib関連の状況を確認したところ・・・

# rpm -qa | grep zlib
zlib-1.2.3-3

あっzlib-develがありませんでした。
ソースからインストールするときは開発ライブラリが必要なんですね。

# yum install zlib-devel

これで解決です。

※mod_deflate(サーバからの出力データを圧縮する)詳しくはこちらを参照してください。
 

2009年9月8日火曜日

告知

自宅で飼っているカブトムシが卵を産み幼虫になりました。
せっかくなので来年の成虫までの記録をブログにしてみました。
こちら
興味のある方はどうぞ・・・
写真が多くあります。幼虫など苦手な方はご注意ください。

2009年9月4日金曜日

CentOS 5.4 いつ?

Red Hat Enterprise Linux 5.4の提供がスタート。
Hyper-V 2.0でも正式サポートされたように仮想化機能が強化されたようですね。

●発表資料より
Red Hat Enterprise Linuxの5.4ソリューションのはRed Hat Enterpriseの仮想化ポートフォリオの基盤であり、カーネルを含めると、仮想化機能を仮想マシンベースの拡大を実現監督のI / O用(KVM)の技術と、インテル®バーチャライゼーションテクノロジー(インテル® VT - d)およびPCI - SIGのSR - iovは、できるインテル® Xeon ®プロセッサー5500番台ベースのプラットフォームの直接I / Oデバイスを共有することで複数の仮想マシンです。 一方、認定済ハードウェアや顧客へのソフトウェアの広範なエコシステムを提供し続けて、リリースには、I / Oスループットおよび開発者のための追加のツールを含めることが改善しています。
※発表資料全文はこちら

CentOS5.4のリリースが待ち遠しいですね。
 

2009年7月28日火曜日

特定の国からのパケットを破棄

自前でCentOS+Postfixにてメールサーバを立てていて月平均で2万通を処理しています。
S25R+Greylistingである程度はスパム対策をしているつもりですが、
それをすり抜けてくるスパムが後を絶たない!
特に韓国、中国がひどく最悪です。また最近ではポーランド、ロシアも多くなっています。
そこでkrfilterというサイトを見つけて韓国、中国からのパケット自体を破棄していました。
(CIDR表記されたフィルターファイルをkrfiler様からダウンロードしてiptablesで読み込み定義する)
しかし最近そのフィルターがダウンロードできずフィルタリングできない状態です。
ということで、自分でAPNIC等からIPアドレス割当リストを取得してフィルターを作ることにしました。
 
とりあえず韓国と中国からのパケット(IPv4)を破棄するよう構築します。
その前に・・・
このフィルター設定で受けた不利益に対しては一切の責任を負えません。
必ず自己責任で行うようにしてください。

また、運用にはそれなりに負荷が掛かりますので非力なマシンでは注意してください。 


1.アジア圏を管轄しているAPNICからIPアドレス割当リストの取得する。
2.リストからCIDR表記に変換してiptablesが読み込める形式でファイルを作成する。
3.iptablesを定義して2で作成したファイルを読み込む。

では実際に行ってみましょう。(尚、作業はrootで行います)
●準備
ファイル保存場所を作成する。
# mkdir /etc/myfilter
# cd /etc/myfilter

●IPアドレス割当リストの取得
# wget -O list_apnic ftp://ftp.apnic.net/pub/apnic/stats/apnic/delegated-apnic-latest
※wgetオプション-Oは別名でファイル保存します。
 ですのでダウンロードするとlist_apnicというファイル名になります。

このリストは以下のような感じで羅列されています。
1列目:管轄先
2列目:国コード
3列目:IPv4またはIPv6の判断
4列目:IPv4なら開始IPアドレス
5列目:割当個数
apnicCNipv4203.128.32.0819220050311allocated
apnicIDipv4203.128.64.0819220000613allocated
apnicCNipv4203.128.96.0819220050314allocated
apnicKRipv4203.128.160.0819220050314allocated

●CIDR表記に変換
「うざい国からのアクセスを全て遮断」で公開されている変換スクリプトを使わせていただきます。
※公開に感謝いたします。
# wget http://www.42ch.net/~shutoff/prog/countryfilter.pl

CentOSで使うために一部修正が必要なので変更します。
91行目iptablesのpathを変更します。(事前に# which iptablesでpathを確認)
================================================
print "$CommentChar variables. change these values before run.\n";
if ($FilterType == 1) { # iptables
   #print "IPTABLES=/usr/sbin/iptables\n"; ← コメント
   print "IPTABLES=/sbin/iptables\n"; ← 追記
   print "FILTERNAME=CKFILTER\n";
   print "TARGET=CKFILTERED\n";
} elsif ($FilterType == 2) { # ipfw
================================================

countryfilter.plにオプションを渡して変換します。
# perl countryfilter.pl iptables KR,CN < ist_apnic > filter_apnic.sh
※<>は実際は半角で・・・

変換されたファイルは以下のような感じで羅列されています。
$IPTABLES -A $FILTERNAME -s 222.250.0.0/16 -j $TARGET
$IPTABLES -A $FILTERNAME -s 222.251.0.0/17 -j $TARGET
$IPTABLES -A $FILTERNAME -s 222.251.128.0/17 -j $TARGET

●iptables定義
iptablesを初期化する
# /etc/init.d/iptables restart

チェインを作成する
# iptables -N CKFILTER
# iptables -N CKFILTERED

チェインにルールを追記する(変換したファイル)
# sh filter_apnic.sh

フィルターに引っかからなかったパケットを許可するルールをCKFILTERチェインに追加する
# iptables -A CKFILTER -j ACCEPT

フィルターに引っかかったパケットを破棄するルールをCKFILTEREDチェインに追加する
さらに破棄されたパケットのログを取るようにする
# iptables -A CKFILTERED -j LOG --log-prefix "Reject-TCP "
# iptables -A CKFILTERED -j DROP

TCP接続開始パケットをINPUTからCKFILTERに飛ばすようにする
# iptables -A INPUT -p tcp -m state --state NEW -j CKFILTER

確認
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
CKFILTER tcp -- anywhere anywhere state NEW

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain CKFILTER (1 references)
target prot opt source destination
CKFILTERED all -- 58.14.0.0/15 anywhere
CKFILTERED all -- 58.16.0.0/16 anywhere
CKFILTERED all -- 58.17.0.0/17 anywhere
CKFILTERED all -- 58.17.128.0/17 anywhere
  ・
  ・
  ・
こんな感じでリストが出てくればOKです。

ログの確認
# cat /var/log/messages
Jul 28 15:08:41 mail01 kernel: Reject-TCP IN=eth1 OUT= MAC=Macアドレス SRC=送信元IP DST=受けIP LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=5926 DF PROTO=TCP
SPT=42975 DPT=25 WINDOW=5840 RES=0x00 SYN URGP=0

こんな感じでログが書き込まれます。

私は一連の流れをスクリプト化して1日1回実行するようcronに登録しています。
※2009/10 1週間に1回に変更した。


アジア圏以外は以下からリストを取得することができます。
AfriNIC管轄:アフリカ地域
ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
ARIN 管轄:アメリカ北部圏
ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
LACNIC管轄:ラテンアメリカ及び西インド諸島地域
ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
RIPE NIC管轄:ヨーロッパ地域
ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest


参考にしたサイト
「うざい国からのアクセスを全て遮断」
krfilter - deny accesses from .kr


※2013/05/13 ご要望頂いたので自動化スクリプトを以下に公開しました。

2009年7月27日月曜日

Linux初心者

これからLinuxを始めようと思う方・・・
 
「Linuxサーバー構築標準教科書」(無償)というのが公開されており
OSのインストールからDNS,Web,Mailと基本的な構築方法を学ぶことができます。
 
GUIによるインストール説明ですが基礎を学ぶには十分な内容でしょう。
とにかく何度もインストールをして体で(!?)覚えることをお勧めします。
 
ダウンロードはこちらからどうぞ!
 

2009年7月8日水曜日

PostgreSQL 8.4

今まで日付時刻に64bit整数型を使うためconfigureに--enable-integer-datetimes が必要でしたが、8.4よりデフォルトで64bit整数型になるそうです。
使わない場合は、--disable-integer-datetimes オプションを指定してconfigureを実行する必要があります。

こちらに8.4に関する技術情報が詳しく掲載されています。
 

2009年7月2日木曜日

Redmine PDF 文字化け

CSV,PDFの文字化け対策として/lang/ja.ymlを以下のように以前編集しましたが
# vi [RedmineインストールDir]/lang/ja.yml (ファイル自体UNICODEで書かれています)54行目付近

general_pdf_encoding: UTF-8
general_csv_encoding: UTF-8

   ↓

general_pdf_encoding: CP392
general_csv_encoding: CP392
ある文字が含まれていると文字化けを起こすようです。そのある文字とは「~」です。

これが含まれているとその行のみですが化けてしまうようですね、
文字数が関連しているのか?チケットの題名に全角22文字ぐらいを超えるとその部分が文字化けを起こすように思えます。ソースレベルでの検証はしていませんが・・・

 
環境:CentOS PostgreSQL Apache経由
 
 

Postfix メールキュー

FortiGateの設定を間違ってしまって一時的にメール配送(送信)ができなくなってしまった!
復旧後、溜まったメールキューを送信しなければ・・・汗
コマンドなんだっけ???
大したコマンドじゃないけど、つい忘れちゃうんだよね。
ということで、残しておこう。

●未配送のメールキューがどれくらいあるか調べる。
# postqueue -p (mailqでも可能)

●キューをフラッシュ: キューにある全てのメールの配送を試みる。
# postqueue -f

●特定のキューをフラッシュ: hoge@example.com宛のメールのみの配送を試みる。
# postqueue -s hoge@example.com

●不要なキューを削除(指定のQueue ID)
# postsuper -d Queue ID

●メールの内容を見る(指定のQueue ID)
# postcat -q Queue ID

無事配送完了!

Mail queue is empty(メールキューは空です)

SQL Server DEFAULT 制約名を取得

ユーザーが定義したテーブルの各フィールドに定義されている制約名を取得する。
 
●SQL Server 2005以降
 
SELECT
 tb.id AS tb_id, --(テーブルID)
 tb.name AS tb_name, --(テーブル名)
 col.object_id AS col_id,  --(フィールドID)
 col.name AS col_name,   --(フィールド名)
 col.default_object_id AS const_id, --(制約ID)
 const.name AS const_name --(制約名)
FROM sys.columns AS col
 LEFT JOIN sysobjects AS tb ON col.object_id = tb.id
 LEFT JOIN sys.default_constraints AS const ON col.default_object_id = const.object_id
WHERE (col.object_id IN(SELECT id FROM sysobjects WHERE (xtype = 'U'))) --ユーザーテーブルのみに限定
ORDER BY tb.id
 
 
●SQL Server 2000(SQL Server 2005も可能)
 
SELECT
 tb.id as tb_id,
 tb.name as tb_name,
 col.name as col_name,
 col.cdefault as const_id,
 const.name as const_name
FROM syscolumns as col
 LEFT JOIN sysobjects as tb on col.id = tb.id
 INNER JOIN sysobjects as const on col.cdefault = const.id
WHERE tb.xtype IN('U', 'D') AND
OTDER BY tb.id
 

2009年6月30日火曜日

RedmineをPostgreSQLで

2010/07/20 CentOS5.5+PostgreSQL8.4.3+Redmine1.0RCをアップしました。
2010/07/20 PostgreSQL8.4.3インストールをアップしました。

PostgreSQLは既に構築されているものとします。
尚、ruby on Railsの構築およびRedmineのインストール等については、以前紹介したRedmine CentOSにインストールを参考にしてください。

環境:CentOS 5.3
   PostgreSQL 8.3.7
   Ruby 1.8.7
   Rubygems 1.3.4
   Rails 2.1.2
   Redmine 0.8.4

尚、PostgreSQL/Ruby/Rubygemsはソースからのインストールで/usr/local/src/で展開しています。

データベース:DB名 redmine
        DBユーザ redmine
        ユーザパスワード:redmine

●データベース
postgresql運用ユーザで作業します。(当環境ではpostgresというユーザ)
# su - postgres

Redmine用のデータベースユーザを新規作成します。
$ createuser -P redmine
 パスワードの設定
 Enter password for new role:パスワード入力(redmine)
 Enter it again:確認のためもう一回入力

 スーパーユーザにしますか?
 Shall the new role be a superuser? (y/n) n

 データベース作成を許可しますか?
 Shall the new role be allowed to create databases? (y/n) y

 新しいユーザの作成を許可しますか?
 Shall the new role be allowed to create more new roles? (y/n) n
 
空のデータベースを作成します。(UTF-8)
$ createdb redmine --owner redmine --encoding=UNICODE
PostgreSQL8.4以降の場合は以下のようにします。
$ createdb redmine --owner redmine --encoding=UNICODE --template=template0

●PostgreSQLアダプター
rootで作業をします。

pg_configへのpathを読み込む
# export PATH=$PATH:/usr/local/pgsql/bin (postgresqlのインストール先)
# gem install pg
Building native extensions. This could take a while...
Successfully installed pg-0.8.0
1 gem installed
Installing ri documentation for pg-0.8.0...
Installing RDoc documentation for pg-0.8.0...

pg (0.8.0)が存在するかチェックします。
# gem list

●接続設定
# vi /home/redmine/config/database.yml
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "redmine"

●スキーマの作成
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
(in /home/redmine)
rake aborted!
libiconv.so.2: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/1.8/i686-linux/iconv.so
/home/redmine/Rakefile:10
(See full trace by running task with --trace)
何やら怒られてしまった。libiconv.so.2が存在しない?
--trace オプションを付けるとエラーが発生したときわかりやすいのでお勧め

rubyのソースからインストール

# cd /usr/local/src/ruby-1.8.7-p160/ext/iconv/ (rubyの展開ソース)
# ruby extconf.rb
checking for iconv() in iconv.h... no
checking for iconv() in -liconv... yes
checking for const of iconv() 2nd argument... no
creating Makefile
# make
# make install

もう一度
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
(in /home/redmine)
rake aborted!
no such file to load -- openssl

またダメだ。今度はssl?
# yum install openssl-devel (必要なので事前に入れておく)
# cd /usr/local/src/ruby-1.8.7-p160/ext/openssl/
# ruby extconf.rb


=== Checking done. ===


creating extconf.h
creating Makefile
Done.


# make
# make install

再度実行(今度はどうだ!)
# cd /home/redmine/
# rake --trace db:migrate RAILS_ENV="production"
今度は大丈夫なようです。これでテーブル等が作成されました。

●デフォルトデータ
# rake redmine:load_default_data RAILS_ENV="production"
Select language: bg, ca, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sk, sr, sv, th, tr, uk, vn, zh, zh-tw [en]
ではjaを入力する。
 
データが作成されました。

以下省略

Ruby on Railsの構築はこちらを参照ください。(DBはMySQLですが)


 

2009年6月15日月曜日

FortiGate 初期化(工場出荷状態)

FortiGateを工場出荷状態に戻すためにはWeb画面から行うことができますが、
CUIでは次のコマンドで初期化できます。
# exe factoryreset
工場出荷状態になりますが続けますか?と聞かれますので"y"を押して実行します。
再起動が終了すれば初期化は完了です。
 
ちなみにHDD搭載のLogDiskは以下のコマンドで初期化できます。
# exe formatlogdick
 

FortiOS TFTP経由による初期化

ファームウェア(FortiOS)をTFTPからセットして初期化する。
FortiGate-50BにV3.00-b0741(MR7 Patch 5)を適用させました。

流れとしてはFortiGate起動>フォーマット>TFTPからファームウェアを読み込む、というようになります。
 
準備として以下のものを用意します。
・シリアルポート(D-sub9)を装備するWindowsPC
・シリアル接続ケーブル(fortigate付属品)
・適用するファームウェア
・TFTP
・スイッチングHUB
 
●TFTP
お勧めはTFTPD32です。以下よりダウンロードします。
http://tftpd32.jounin.net/tftpd32.htmlにアクセスしてDownloadを指定します。


 
最新版のZIPファイルを指定します。

 
解凍してできたフォルダをCドライブの直下に移動します。(C:\tftpd32.333)
そのフォルダ内にFortiGateのファームウェアFGT_50B-v300-build0741-FORTINET.outを配置させます。※リネームして名前を短くした方が後々便利かも。(C:\tftpd32.333\FGT_50B-v300)
 
●セッティング
FortiGateの電源はOFFにしておきます。
PCとFortiGateをシリアルケーブルで接続してさらにPCとFortiGateを用意したHUBにLANケーブルで接続します。PCに適当なIP(ここでは192.168.1.100/255.255.255.0)を固定で振ります。
※デフォルトゲートウェイ、DNSは設定する必要はありません。

 
●TFTPの起動
C:\tftpd32.333\tftpd32.exeをダブルクリックして起動します。
 
●ターミナルソフト
Windows付属のハイパーターミナルを使います。
スタート>すべてのプログラム>アクセサリ>通信>ハイパーターミナル
起動時以下のメッセージが表示されますが、「いいえ」を選択しておきます。

 
市外局番を入力します。(適当な数値でも構いません)
ただし以前に起動したことのある場合は省略されることがあります。

 
そのままOKを押します。

 
適当に名前欄に名称を入力します。

 
接続方法に接続したCOM番号を指定します。(通常はCOM1でしょう)

 
接続プロパティを以下のように設定します。
ビット/秒:9600
データビット:8
パリティ:なし
ストップビット:1
フロー制御:なし

 
FortiGateの電源を入れると起動内容が表示され"Press any key to display configuration menu・・・"で一時止まりますので素早くPC側で任意のキーを入力します。キー入力のタイミングが遅いとそのまま起動されてしまうので注意してください。その場合は再度電源を入れ直してください。

 
"Enter G,F,I,Q, or H"と表示され選択待ち状態になりますので"F"を押します。

 
次に"y"を押します。

 
再度"G,F,I,Q, or H"と表示され選択待ち状態になりますので今度は"G"を押します。

 
各アドレスやファームウェアのファイル名を入力します。
"Enter TFTP server adrress"に192.168.1.100(WindowsPCのIP)
"Enter Local adrress"に192.168.1.99(FortiGateのInternal IPとして適当に指定)
"Enter firmware image file name"にFGT_50B-v300-build0741-FORTINET.out
※Please connect TFTP server to Ethernet port "3".と出ているときはFortiGateのローカルポートを"3"にLANケーブルを接続してください。
※TFTPが起動していないと失敗しますので必ず起動しているか確認してください。

 
しばらくするとTFTPからファームウェアが転送されセーブするかどうかメッセージが表示されますので"D"を押します。

 
しばらくしてログインプロンプトが表示されたら初期化は完了です。
コンソール接続されているのでついでに簡単な初期設定をしておきましょう。
 
admin/パスワードなしでログインをします。
 
●インターナルのIPアドレス
※初期状態はNATモードになっています。
FGT9999999999 # config system interface
FGT9999999999 (interface) # edit internal
FGT9999999999 (internal) # set ip 192.168.1.254/24 ※環境に合わせて設定
FGT9999999999 (internal) # set allowaccess https ping ※必要に応じてhttpなど追記していく
FGT9999999999 (internal) # end
FGT9999999999 #
 
●Web管理画面の表示言語
ついでにタイムゾーン、ホスト名を同時に設定します。
FGT9999999999 # config system global
FGT9999999999 (global) # set language japanese
FGT9999999999 (global) # set timezone 60
FGT9999999999 (global) # set hostname FGT50B
FGT9999999999 (global) # end
FGT9999999999 #
 

わかりにくいところがありましたらコメントを残しておいていただけると助かります。

 

Google検索