กรกฎาคม 2007


คราวก่อนลอง bind-chroot แล้วงงมาก config เท่าไหร่ก็ไม่ work ซะที จนเลิกใช้ centos ไปหลายสัปดาห์ มาคราวนี้ได้วิธี config มาแล้วครับท่าน เริ่มกันเลยละกัน

#yum install bind-chroot
#chmod 755 /var/named/
#chmod 775 /var/named/chroot/
#chmod 775 /var/named/chroot/var/
#chmod 775 /var/named/chroot/var/named/
#chmod 775 /var/named/chroot/var/run/
#chmod 777 /var/named/chroot/var/run/named/
#cd /var/named/chroot/var/named/
#ln -s ../../ chroot
#cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local /var/named/chroot/var/named/named.local
#cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root
#touch /var/named/chroot/etc/named.conf
#chkconfig –levels 235 named on
#/etc/init.d/named start

ติดตั้งและเตรียมห้องขัง (jail) เรียบร้อย ต่อไปก็แก้ไข named.conf ล่ะครับ

#nano /var/named/chroot/etc/named.conf
acl lan { 172.27.0.0/16; 127.0.0.1; };

options {
    listen-on { lan; };
    forwarders {
       172.27.0.100;
       172.27.0.101;
    };
};

zone “sample.com” {
    type master;
    file “var/named/data/sample.com.zone”;
    allow-query { lan; };
    allow-transfer { lan; };
    allow-update { lan; };
};

zone “27.172.IN-ADDR.ARPA” {
    type master;
    file “var/named/data/27.172.zone.rev”;
    allow-query { lan; };
    allow-transfer { lan; };
    allow-update { lan; };
};

หลังจากนั้นก็มาสร้างไฟล์ zone กันครับ

#nano /var/named/chroot/var/named/data/sample.com.zone

และ

#nano /var/named/chroot/var/named/data/27.172.zone.rev

จากนั้นก็

#/etc/init.d/named restart

ถ้าไม่มีอะไร error ก็เรียบร้อยแล้วครับท่าน

Powered by ScribeFire.

เมื่อต้องการใช้งาน ldap client บน ubuntu ให้ติดตั้งโดย

#aptitude install ldap-client

Powered by ScribeFire.

ต้องการติดตั้ง WebMin สำหรับ Ubuntu ทำตามนี้นะครับ

Download version ล่าสุดสำหรับ webmin และ usermin ได้ที่ www.webmin.com โดยเลือกที่เป็น Debian Package

จากนั้นทำการติดตั้ง โดย

#dpkg -i webmin_x.xx_all.deb

ซึ่งจะไม่สามารถติดตั้งได้เลย เพราะขาด package ตัวอื่นๆ ให้ต่อด้วยคำสั่ง

#apt-get install -f

เป็นอันเสร็จพิธี

ส่วน usermin ก็เหมือนกันครับ

Powered by ScribeFire.

จุดประสงค์ก็คือ การส่งเมล์ออกโดยผ่านทาง mail server ของผู้ให้บริการรายอื่นๆ ที่ได้รับการรับรอง เพราะหากส่งจาก smtp ของเราเองบางครั้งจะถูกตีกลับ หรือไม่ยอมรับเมล์ของเรา เนื่องจากว่า smtp ของเราไม่ได้มีตัวตนจริงๆ

วิธีการนี้ใช้กับ Postfix ซึ่งทำตามขั้นตอนดังนี้

1. แก้ไข config ของ postfix

postconf -e ‘relayhost = smtp.example.com’
postconf -e ’smtp_sasl_auth_enable = yes’
postconf -e ’smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd’
postconf -e ’smtp_sasl_security_options =’

2. สร้าง user ที่สามารถส่งเมล์ออกทาง relayhost ได้

#echo “smtp.example.com   user1:password” > /etc/postfix/sasl_passwd
#chown root:root /etc/postfix/sasl_passwd
#chmod 600 /etc/postfix/sasl_passwd

3. Convert to postfix db

#postmap /etc/postfix/sasl_passwd

4. Restart postfix

#/etc/init.d/postfix restart

เท่านี้ก็เป็นอันเสร็จพิธี

Powered by ScribeFire.

บันทึกการติดตั้ง ซึ่งมีขั้นตอนดังนี้

1. ติดตั้ง Apache2 + SSL

#apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

2. สร้าง self certificated

#openssl req -new -newkey rsa:1024 -days 3650 -nodes -x509 -keyout  /etc/apache2/ssl/server.pem -out /etc/apache2/ssl/server.pem

3. Enable SSL

#a2enmod ssl

4. แก้ไข config

#cd /etc/apache2/sites-available
#cp default ssl
#cd ../sites-enable
#ln -s ../sites-available/ssl ssl
#cd ../sites-available
#nano default
แก้ไขบรรทัดดังนี้
-NameVirtualHost *:80
-
แค่นี้เอง

#nano ssl

แก้ไขบรรทัดดังนี้
-NameVirtualHost *:443
-
-ServerName localhost
-DocumentRoot /var/www

เพิ่มบรรทัดต่อไปนี้
-SSLEngine On
-SSLCertificateFile /etc/apache2/ssl/server.pem

แก้ไขไฟล์ /etc/apache2/ports.conf

เพิ่มบรรทัดต่อไปนี้

-Listen 443

4. Restart apache

#/etc/init.d/apache2 restart

เท่านี้ก็ใช้ได้

Powered by ScribeFire.

- Postfix
- Dovecot

ติดตั้งตามขั้นตอนจากแผ่นจนจบ แล้วต่อด้วย

1. Enable root account

#sudo passwd root

แล้วแปลงตัวเป็น root
#sudo su

2. Config the network

#nano /etc/network/interfaces
กำหนดค่า ip เป็น static
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

#/etc/init.d/networking restart

3. Edit /etc/apt/sources.list and update

#nano /etc/apt/sources.list
Comment out or remove the installation CD from the file

#aptitude update
#aptitude upgrade

4. Change default shell

#rm -f /bin/sh
#ln -s /bin/bash /bin/sh

5. Install ssh server

#aptitude install ssh openssh-server

6. Edit /etc/hosts, /etc/hostname

#nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

#nano /etc/hostname

server1.sample.com

7. Install base software

#aptitude install build-essential linux-headers-`uname -r`
#aptitude install binutils cpp flex gcc libarchive-zip-perl libc6-dev
libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev
lynx m4 make ncftp nmap openssl perl perl-modules
unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev
g++

8. Restart system

#reboot

9. Install mysql

#aptitude install mysql-server mysql-client libmysqlclient15-dev

#nano /etc/mysql/my.cnf

comment out the line bind-address = 127.0.0.1

#/etc/init.d/mysql restart

#mysqladmin -u root password “newpassword”
#mysqladmin -h server1.sample.com -u root password “newpassword”

10. Install postfix

เมื่อติดตั้ง mysql ตัว postfix จะถูกติดตั้งมาด้วยโดยอัตโนมัติ ให้ทำการ reconfig โดย

#dpkg-reconfigure postfix
ให้ enter ผ่านไปทั้งหมด

11. Install bind9

#aptitude install bind9

เมื่อติดตั้งเสร็จก็หยุดมันซะก่อน

#/etc/init.d/bind9 stop

จับขังคุกซะด้วย

#nano /etc/default/bind9

แก้ไขบรรทัด OPTIONS=”-u bind -t /var/lib/named”

สร้างกรงขังซะด้วย
#mkdir -p /var/lib/named/etc
#mkdir /var/lib/named/dev
#mkdir -p /var/lib/named/var/cache/bind
#mkdir -p /var/lib/named/var/run/bind/run
#mv /etc/bind /var/lib/named/etc
#ln -s /var/lib/named/etc/bind /etc/bind
#mknod /var/lib/named/dev/null c 1 3
#mknod /var/lib/named/dev/random c 1 8
#chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
#chown -R bind:bind /var/lib/named/var/*
#chown -R bind:bind /var/lib/named/etc/bind

แก้ไขการบันทึก log
#nano /etc/default/syslogd

แก้ไขบรรทัด SYSLOGD=”-a /var/lib/named/dev/log” ตามนี้

เปิดก๊อกได้
#/etc/init.d/syslogd restart
#/etc/init.d/bind9 start

แต่ตอนนี้ยังไม่ได้สร้าง zone ของตัวเองเด้อ

12. สร้าง certificate file

#mkdir /etc/postfix/ssl
#cd /etc/postfix/ssl
#openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
#chmod 600 smtpd.key
#openssl req -new -key smtpd.key -out smtpd.csr
#openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
#openssl rsa -in smtpd.key -out smtpd.key.unencrypted
#mv -f smtpd.key.unencrypted smtpd.key
#openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

13. ปรับแต่ง postfix

#nano /etc/postfix/main.cf แก้ไขให้เป็นไปตามนี้
# General parameters
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
#delay_warning_time = 4h
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
mynetworks = 127.0.0.0/8
mydomain = example.com
myhostname = server1.example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
home_mailbox = Maildir/
mailbox_command =

# Relayhost parameters
relayhost = [mail.isp.com]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

# SASL parameters
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =  permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

# TLS parameters
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
tls_random_source = dev:/dev/urandom

มีการกำหนดให้ relay mail ไปที่ [mail.isp.com] จึงต้องสร้างไฟล์สำหรับเก็บ authen ของ [mail.isp.com] ตามนี้

#nano /etc/postfix/sasl_passwd

[mail.isp.com]   username@isp.com:password

#chmod 600 /etc/postfix/sasl_passwd
#chown root:root /etc/postfix/sasl_passwd
#postmap /etc/postfix/sasl_passwd

14. Install dovecot

#aptitude install dovecot-common dovecot-imapd dovecot-pop3d

ปรับแต่ง /etc/dovecot/dovecot.conf เท่าที่จำเป็นก่อน ตามนี้

- protocols = imap imaps pop3 pop3s
- default_mail_env = maildir:~/Maildir
- ssl_cert_file = /etc/postfix/ssl/smtpd.crt
- ssl_key_file = /etc/postfix/ssl/smtpd.key
- ssl_disable = no
- disable_plaintext_auth = no
- auth default {
     mechanisms = plain login
     passdb pam {
     }
     userdb passwd {
     }
     socket listen {
       client {
         path = /var/spool/postfix/private/auth
         mode = 0660
         user = postfix
         group = postfix
       }
     }
   }

เริ่มต้นทำงานได้
#/etc/init.d/dovecot start
#/etc/init.d/postfix restart

15. เพิ่ม user vmail

#useradd -r -u 150 -g mail -d /home/vmail -s /sbin/nologin -c “Virtual mailbox” vmail
#mkdir /home/vmail
#chmod 770 /home/vmail
#chown vmail:mail /home/vmail

16.

17. ติดตั้ง apache

#aptitude install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

แก้ไข /etc/apache2/mods-available/dir.conf ตามนี้

DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

แก้ไข /etc/apache2/ports.conf ตามนี้

Listen 80
Listen 443

Enable some apache modules

#a2enmod ssl
#a2enmod rewrite
#a2enmod suexec
#a2enmod include

18. ติดตั้ง php

#aptitude install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

#/etc/init.d/apache restart

Powered by ScribeFire.

ไม่รู้เกิดเหตุการแบบนี้ได้จังได๋ แต่วิธีแก้ก็คือ

#yum clean all

หรือ

#yum clean metadata

แต่ว่าวิธีที่ 2 ยังไม่ได้ลอง

Powered by ScribeFire.

ลอง ubuntu server มาได้พักใหญ่ๆ สลับกับ CantOS ตอนแรกคาดว่าคงจะไปได้สวยกับ ubuntu แต่จนแล้วจนรอดก็ไปได้แค่ค่อนทางเอง คราวนี้จะกลับมาเอาจริงกับ CentOS เพราะยังไงก็เป็น redhat ซึ่งมีคนใช้มากกว่า น่าจะมีผู้ช่วยหรือเอกสารให้ค้นหาได้มากกว่า … อืมมม ไม่รู้คิดถูกคิดผิดหว่าคราวนี้

Powered by ScribeFire.

ที่มาก็คือ ได้ติดตั้ง postfix + courier-imap ตามคู่มือจาก howtoforge ตามที่เคยได้ติดตั้งมาแล้วนับสิบรอบ ทุกครั้งก็ไม่เคยเจอปัญหาอันนี้คือ พอ adduser ใน ubuntu เสร็จ ก็ไป add mail account ใน outlook express เลย โดยให้เป็นแบบ IMAP ปรากฎว่ามัน error ครับท่าน ลอง netstat -tap ดู อ้าว มันมี daemon imap2 เฉพาะ tcp6 นี่หว่า ทำไมมันไม่มี daemon imap2 สำหรับ tcp เฉยๆ ล่ะเนี่ย

มึนตี้บอยู่พักใหญ่ ข้าพเจ้าทำอะไรผิดไปหว่า ก็ตามขั้นตอนเกือบทุกอย่างนี่นา งั้นลอง remove courier-imap ออกก่อนละกัน แล้วติดตั้งเข้าไปใหม่ ผลก็คือเหมือนเดิมครับท่าน ไม่มี daemon imap2 สำหรับ tcp เฉยๆ ตัดสินใจลง ubuntu ใหม่อีกรอบแล้วกัน (รอบที่เท่าไหร่จำไม่ได้แล้ว รู้แต่กว่าเกิน 20 รอบแล้วล่ะ)

ทำตามขั้นตอนจาก howtoforge ทุกอย่าง แต่เหมือนเดิมครับท่าน อืมมม เกิดอะไรขึ้น ก็เลยลอง telnet localhost 25 แล้วส่งเมล์หา user ที่เพิ่ง add เข้าไปก็ผ่านครับ ไม่มีปัญหา คราวนี้มาลอง add mail account ใน outlook express บ้าง ปรากฎว่า … ผ่านครับ

อ้าว … ไหงงั้นล่ะเนี่ย ลองไปดูที่ /home/user ที่เพิ่ง add กับที่รับเมล์แล้ว ถึงได้ถึงบางอ้อซะที

สรุปตามความเข้าใจของตัวเองก็คือ ถ้า user ยังไม่ได้มีการรับเมล์ IMAP directory ก็จะยังไม่ถูกสร้างขึ้น เมื่อยังไม่มี IMAP directory outlook express ก็ไม่สามารถ synchronize folder ได้ มันก็แจ้ง error ก็เท่านั้นเอง แต่ว่าก็ว่าเถอะ ไอ้ error ของ outlook express ไม่ดันไม่บอกว่า ไม่มี imap folder นี่หว่า แต่ดันบอกว่า network error ซะฉิบ

Powered by ScribeFire.

aptitude install postfix-mysql postfix-tls postfix-doc courier-authlib-mysql libsasl2-modules-sql libpam-mysql

Powered by ScribeFire.