Centos - การติดตั้งขั้นพื้นฐาน

From Wiki_EAI
Jump to navigation Jump to search

การติดตั้ง Postfix สำหรับการเปิดใช้งาน SMTPUTF8, Cyrus SASL และ OpenSSL

สรุปสาระสำคัญของ mail server

คู่มือนี้ใช้สำหรับการติดตั้ง mail server ที่สามารถรับ mail ที่เป็น SMTPUTF8 ได้ นอกจากนี้ยังป้องการการตีกลับของอีเมลหากผู้ส่งส่งไปยัง mail server

ที่ไม่รองรับ SMTPUTF8 รวมถึง IMAP และ POP3 ที่ใช้ Courier ด้วย ผู้ใช้จะถูกเพิ่มเป็น local user ถึงแม้ว่าจะ login ผ่าน SSH หรือไม่ก็ตาม mail ทั้งหมดจะถูกเก็บไว้ที่ /home/user

Squirrel-mail ที่ถูกแก้ไขนี้จะถูกติดตั้งในการส่งและรับ email (จะต้องมีการทดสอบ)

email client สามารถนำมาใช้ได้ โดยใช้ username ที่ไม่ได้เป็น EAI address

ใช้ Centos 7, 64 Bit

  • ไม่ได้ทดสอบบน Centos 5 กับ Centos 6 ซึ่งอาจจะใช้งานไม่ได้

คุณสามารถติดตั้งด้วย root ไม่เช่นนั้นให้ระบุเป็น non privileged user

ข้อสังเกต ความต้องการและการตั้งค่าเริ่มต้น

  • Centos 7 (64 bit) แบบ minimal installation
  • Centos 7 มาพร้อมกับการติดตั้ง postfix 2.x
  • คู่มือนี้สมมติว่าคุณติดตั้งด้วย root เว้นแต่จะระบุไว้เป็นอย่างอื่น
  • DNS ของคุณต้องติดตั้งให้พร้อมก่อนการตั้งค่า
  • hostname คือ ชื่อโดเมนของคุณ เช่น domain.com
  • mail.hostname คือ ชื่อ Mail server ของคุณ เช่น mail.domain.com
แก้ไข hostname 

ถ้าคุณใช้ international domain ให้คุณใช้ในรูปแบบ punycode

ตัวอย่าง: mail.วีคลาส.ไทย punycode equivalent ควรจะเป็น mail.xn--42c0eeo3bp.xn--o3cw4h

vi /etc/hostname

แก้ไขเป็นชื่อ hostname ที่คุณต้องการ

mail.domain.com


ปิดและเปิด server ใหม่ เพื่อปรับปรุง hostname

หลังจากปิดและเปิด server ใหม่แล้ว ให้ใช้คำสั่งต่อไปนี้จะแสดง hostname เพื่อดูว่า hostname เปลี่ยนแล้ว

hostname

ติดตั้ง Postfix จาก source และ libraries ที่จำเป็น (Cyrus SASL, OPENSSL)

ใช้คำสั่ง get เพื่อดาวน์โหลด Postfix เวอร์ชั่น 3.0.1 หรือเวอร์ชั่นที่ใหม่กว่าเพื่อเปิดใช้งาน SMTPUTF8 คุณสามารถโหลดได้จาก http://www.postfix.org/download.html ในตัวอย่างด้านล่าง เราดาวน์โหลด postfix-3.0.1.tar.gz เวอร์ชั่นของคุณอาจจะแตกต่างออกไป ขณะนี้การติดตั้ง Postfix ด้วย apt-get นั้นจะทำการติดตั้ง Postfix เวอร์ชั่นเก่าที่ยังไม่รองรับ SMTPUTF8 ซึ่งอาจจะมีการเปลี่ยนแปลงในภายหลัง

ติดตั้ง libraries และ tools ที่จำเป็น

yum groupinstall development tools
yum install cyrus-sasl cyrus-sasl-devel openssl openssl-devel libdb-devel.x86_64 libicu-devel telnet net-tools

ดาวน์โหลด Postfix 3.0.1 หรือเวอร์ชั่นที่ใหม่กว่า

tar -xzvf postfix-3.0.1.tar.gz
cd postfix-3.0.1
sed -i 's/.\x08//g' README_FILES/*

Compile ด้วย openssl และ sasl auth

make makefiles CCARGS='-DUSE_TLS -I/usr/include/openssl  -DUSE_SASL_AUTH -DUSE_CYRUS_SASL  -I/usr/include/sasl '   AUXLIBS='-L/usr/lib64  -L/usr/lib64/openssl -L/usr/lib64/sasl2 -lssl -lcrypto -lsasl2'
make

หมายเหตุ: ถ้าคุณใช้ OS ที่เป็น 32Bit OS ให้แทนที่ /lib64 ด้วย /lib


ติดตั้ง Postfix

make upgrade

คุณสามารถนำไฟล์การตั้งค่าที่ไม่ได้ใช้ออกไป ซึ่งจะแสดงในส่วนสุดท้ายของการติดตั้ง

การตั้งค่า Postfix

สร้าง Mails Alias สำหรับ root หรือ postmaster เพื่อส่งไปยังผู้ใช้งานจริง (YourLogin)
หมายเหตุ: ขั้นตอนนี้เป็นทางเลือกเนื่องจาก Centos 7 ได้เติมไว้ให้แล้ว

vi /etc/aliases

copy และ paste ตัว code ด้านล่าง โดยเปลี่ยน YourLogin เป็น user ของคุณเองแล้วทำการ save และ quit

MAILER-DAEMON:    postmaster
postmaster:       root
root:             YourLogin

ต่อจากนั้น

newaliases


แก้ไข mail.domain.tld, domain.tld, yourotherdomain.tld (yourotherdomain.tld ไม่จำเป็นต้องใส่ก็ได้)

postconf compatibility_level=2
postconf -e 'myhostname  = mail.domain.tld'
postconf -e 'mydomain    = domain.tld'
postconf -e 'myorigin    = $mydomain'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24'
postconf -e 'alias_database = hash:/etc/aliases'
postconf -e 'alias_maps = hash:/etc/aliases'
postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, yourotherdomain.tld'
postconf -e 'smtputf8_enable = yes'


ขั้นตอนสุดท้าย start Postfix ในครั้งแรก

service postfix restart


ลองใช้งานและส่ง mail โดยใช้ Telnet ส่ง mail ไปยัง server อื่นๆ เช่น gmail

ทดสอบว่าคุณมีการเปิดการใช้งาน SMTPUTF8 หรือไม่

ป้อนคำสั่งในหน้า console ซึ่งคำสั่งจะทำการเชื่อมต่อไปยัง SMTP

 telnet localhost 25

ควรจะแสดงผลลัพธ์ดังนี้

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 YourHostName ESMTP Postfix


พิมพ์คำสั่งด้านล่างแล้วกด enter

EHLO localhost


เมื่อพบว่ามี 250 SMTPUTF8 อยู่ แสดงว่า server ของคุณ สามารถรับและส่ง mail จากที่อยู่ email สากลได้

250-YourHostName
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8


หากไม่พบ 250 SMTPUTF8 ให้ลองเอา Postfix ออกและลองใหม่อีกครั้ง เพราะอาจจะมีการติดตั้งส่วนเสริม software ของ Postfix ที่เป็นตัวเก่าเหลืออยู่

เปิดใช้งาน SMTP Auth

yum install  cyrus-sasl-plain


แก้ไขไฟล์ /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN


ปรับปรุงการตั้งค่า Postfix

postconf -e 'smtpd_sasl_path = smtpd'
postconf -e 'smtpd_sasl_auth_enable = yes'
service saslauthd start
postfix reload


สร้าง user ที่เราสามารถทดสอบการ authentication ได้ แทนที่ AnyUserName ด้วย user ของคุณ

useradd -m AnyUserName  -s /usr/sbin/nologin
passwd AnyUserName


สร้าง Auth key ของคุณ แทนที่ username ด้วย username ของคุณ และแทนที่ password ด้วย password ของคุณ

perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'


แทนที่ dGVzdAB0ZXN0AHRlc3Q= ด้วย key ที่คุณสร้างขึ้น

	
telnet 	localhost 25
EHLO localhost
AUTH PLAIN dGVzdAB0ZXN0AHRlc3Q=


คุณควรจะได้รับข้อความว่า Authentication successful


จบการตั้งค่า Postfix ด้วยการอนุญาติให้เฉพาะผู้ใช้ที่ทำการ authenticate ทำการส่งไปยัง SMTP ได้

postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'smtpd_sasl_local_domain = $mydomain'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
postconf -e 'smtpd_relay_restrictions =  permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_sender_login_mismatch'

เปิดใช้งาน TLS

สร้าง certificates

cd /etc/postfix

openssl req -new -outform PEM -out smtpd.cert \
   -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM \
   -days 365 -x509

ตอบคำถามต่อไปนี้เมื่อได้รับแจ้ง


ปรับปรุงการตั้งค่า Postfix

postconf -e 'smtpd_enforce_tls = no'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_key_file  = /etc/postfix/smtpd.key'
postconf -e 'smtpd_tls_cert_file  = /etc/postfix/smtpd.cert'
service postfix restart

สามารถทดสอบโดยการ telnet ไปยัง 25 และใช้คำสั่ง EHLO จะพบคำว่า STARTTLS

250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8

พิมพ์คำสั่งด้านล่าง

STARTTLS

ปรากฎผลลัพธ์ดังนี้

220 2.0.0 Ready to start TLS

การส่งและรับ email จากอินเทอร์เน็ต

  • หมายเหตุ การติดตั้ง mail ผ่าน command line อาจจะไปติดตั้งทับ Postfix ของคุณด้วย Postfix ตัวเก่ากว่า

การส่ง email ด้วย telnet

telnet localhost 25
EHLO localhost

MAIL FROM: <youruser@domain.tld> SMTPUTF8
RCPT TO: <EAI@IDN.idn>
data
Subject: A Test

This is the body

.

ใช้เครื่องหมาย "." เพื่อจบข้อความและทำการส่งข้อความ

ในส่วนนี้โปรดตรวจสอบให้แน่ใจว่าสามารถรับและส่ง mail ได้

สามารถส่งข้อความด้วย EAI address และตรวจสอบได้ที่ /var/mail/mail.log ใน log ด้านล่าง
หมายเหตุ: test@domain.tld คือ ผู้รับ local

Aug  3 02:48:49 ip-172-31-21-209 postfix/local[21614]: 7EAD343550: to=<test@domain.tld>, relay=local, delay=0.62, delays=0.62/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Aug  3 02:48:49 ip-172-31-21-209 postfix/qmgr[21586]: 7EAD343550: removed

email จะถูกจัดเก็บไว้ที่ /var/mail/

หากไม่ได้รับ email ให้ลองใช้เครื่องมือ online อื่น เช่น mxtoolbox.com เพื่อตรวจสอบปัญหาที่เกิดขึ้น

การตั้งค่า Courier authlib, Courier IMAP

ขั้นตอนนี้จะทำการเปิดใช้งาน IMAP และ POP3

ติดตั้ง libtool ซึ่งจำเป็นสำหรับ authlib

yum install libtool-ltdl-devel.x86_64

ติดตั้ง Courier Unicode Library 1.2 ซึ่งสามารถดาวน์โหลดได้จาก http://sourceforge.net/projects/courier/files/courier-unicode

tar -jxvf courier-unicode-1.2.tar.bz2
cd courier-unicode-1.2
./configure
make 
make install

ดาวน์โหลด authlib ได้จาก http://sourceforge.net/projects/courier/files/authlib/ เวอร์ชั่นล่าสุดคือ 0.66.3

tar -jxvf courier-authlib-0.66.3.tar.bz2
cd courier-authlib-0.66.3
./configure --with-authshadow --with-mailuser=postfix --with-mailgroup=postfix
make 
make install
make install-configure

แก้ไขไฟล์ /usr/local/etc/authlib/authdaemonrc และเปลี่ยนค่า authentication method

authmodulelist="authshadow"


แก้ไขไฟล์ /etc/ld.so.conf.d/locallibs.conf และเพิ่ม

/usr/local/lib


นำค่าที่ปรับเปลี่ยนไปใช้งาน

ldconfig

ต่อจากนั้นให้ Start

/usr/local/sbin/authdaemond  start

ตรวจสอบว่าโปรแกรมทำงานอยู่หรือไม่

ps -ef |grep authdaemond

ควรจะแสดงค่าดังต่อไปนี้

 26393 26392  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond
 26394 26393  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond
 26395 26393  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond
 26396 26393  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond
 26397 26393  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond
 26398 26393  0 10:26 ?        00:00:00 /usr/local/libexec/courier-authlib/authdaemond


หมายเหตุ: คุณจะต้องเปลี่ยนเป็น user ปกติที่ไม่ใช่ root (สร้าง user ใหม่ถ้าคุณยังไม่เคยสร้าง user ไว้)

ติดตั้ง courier imap ซึ่งจะรองรับทั้ง IMAP และ POP3

ดาวน์โหลดได้จาก http://sourceforge.net/projects/courier/files/imap

tar -jxvf courier-imap-4.16.2.tar.bz2
cd courier-imap-4.16.2
./configure
make

จากตรงนี้ คุณสามารถกลับไปใช้ root ถ้าคุณไม่ต้องการใช้คำสั่ง sudo

sudo make install
sudo make install-configure
cd /usr/lib/courier-imap/libexec
./pop3d.rc start

ตรวจสอบว่า imap ทำงานอยู่หรือไม่

netstat -ntlp | grep 110

การเปิดใช้งาน SSL ด้วย self signed certificate

cd /usr/lib/courier-imap/etc
vi pop3d.cnf


ปรับเปลี่ยนได้ตามต้องการจากนั้นให้ save และ quit

[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated POP3 SSL key
CN=localhost
emailAddress=postmaster@example.com

ต่อไปให้สร้าง certificates

 cd ../share
 ./mkpop3dcert

ตอนนี้คุณสามารถ run pop ด้วย ssl และ listen ที่พอร์ต 995

cd /usr/lib/courier-imap/libexec
./pop3d-ssl.rc start
netstat -tulpn |grep 995

ขั้นตอนสุดท้ายเปิดการใช้งาน pop3 และ pop3s ที่ init

@TODO

ต่อด้วย Imap

/usr/lib/courier-imap/libexec/imapd.rc start
netstat -ntlp | grep 143


แก้ไขไฟล์ /usr/lib/courier-imap/etc/imapd เปลี่ยน IMAPDSTART=NO เป็น

IMAPDSTART=yes

เปิดการใช้งาน imap SSL โดยใช้ self generated certificates

แก้ไขไฟล์ /usr/lib/courier-imap/etc/imapd.cnf และแก้ไขค่าให้สอดคล้องกันจากนั้นให้สร้าง certs

 /usr/lib/courier-imap/share/mkimapdcert

ต่อไป start และ ตรวจสอบ imap-ssl

/usr/lib/courier-imap/libexec/imapd-ssl.rc start
netstat -ntlp |grep 993


ขั้นตอนสุดท้ายเปิดใช้งานที่ startup

@TODO


ตั้งค่า Postfix ให้ใช้ Maildir เป็นที่เก็บ Mail

postconf -e 'home_mailbox = Maildir/'
postfix reload

ปรับเปลี่ยน Skeleton และสร้างโฟลเดอร์สำหรับผู้ใช้งานที่เราสร้างขึ้นก่อนหน้านี้ จากในตัวอย่างเราใช้ชื่อผู้ใช้งาน test

mkdir -p /etc/skel/Maildir/{cur,new,tmp}

mkdir -p /home/test/Maildir/{cur,new,tmp}
chown test.test /home/test/Maildir/{,cur,new,tmp}
chmod 0700 /home/test/Maildir/{,cur,new,tmp}

ทดสอบ IMAP และ POP3

telnet localhost imap
ok login username password


telnet localhost pop3
User username
Pass password

เปิด Firewall

firewall-cmd --zone=public --add-port=995/tcp --permanent
firewall-cmd --zone=public --add-port=110/tcp --permanent
firewall-cmd --zone=public --add-port=143/tcp --permanent
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --reload

ติดตั้ง Squirrel-mail

Make sure you have apache and php installed.

ติดตั้งและแก้ไข Squirrel mail

cd to-your-public-html-folder
wget http://interlab.ait.ac.th/eai-wiki/files/squirrelmail.zip
unzip squirrelmail.zip

แก้ไขไฟล์ config และเปลี่ยนค่า attachchment_dir และ data_dir โดยอย่าลืมสร้างโฟลเดอร์ เปลี่ยน ownership เป็น apache user ของคุณและอนุญาติให้สามารถทำการเขียนได้

vi squirrelmail/config/config.php

การเข้าถึง squirrelmail

http://your-domain/squirrelmail/

ลิงค์ที่เกี่ยวข้อง

Mail server จะไม่รับและส่ง email จากภายนอก

แหล่งที่มา

http://postfix.org/