Diary Life

DRBD on SAN + postfix + dovecot + mysql style golfreeze

posted by packetlovegolf February 6, 2008 2 Comments

วันนี้ก็ลอง test SAN +Postfix + Dovecot + DRBDversion 0.7 (active-standby) + mysql(DB-replicate) ครับ

20120708140803_img_1050

พอดีวันนี้ อยากที่จะลอง test โดยสร้าง LUN มาสองตัวใน SAN แล้ว mount ให้กับ server ทั้งสองเครื่อง โดยใช้เป็น mailbox แล้วเอา drbd มาทำ mirror data ระหว่างสองเครื่องครับ
Application ที่ลงก็มี
– Apache2 + Php5 , php5-mysql , ,mysql-server5 ,mysql-client5 , DRBDv0.7 ลงไปทั้งสองเครื่อง
– postfix2.3 ,postfix-mysql , dovecot-common , dovecot-pop3d ลงไปทั้งสองเครื่อง
– เปลี่ยน path เก็บ mailbox ไปที่ LUN ที่สร้างจาก SAN แล้ว mount ไว้
สำหรับพวก package ชุดแรกผมคิดว่า หาอ่านเอาได้ครับ สำหรับ package ชุดสองผมก็ทำโดย
#apt-get install postfix postfix-mysql dovecot-common dovecot-pop3d
#mysqladmin -u root password ‘xxx’
เลือกเป็น  internet-site
download postfixadmin เพื่อมา manage เกี่ยวกับ virtual mail user น่ะครับ
#wget http://golfreeze.packetlove.com/download/Linux_packets/postfixadmin-2.2.0-RC1.tar.gz
#tar zxf postfixadmin-2.2.0-RC1.tar.gz
#cd postfixadmin-2.2.0-RC1
import database ของ postfixadmin ก่อน
#mysql -u root -p < DATABASE_MYSQL.txt
เสร็จแล้วไป config ที่ postfix ครับ
——————————————
#vi /etc/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
#delay_warning_time = 4h
myhostname = mail.packetlost.com
myorigin = packetlost.com
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
————————————
เพิ่ม config นี้เเข้าไปในไฟล์ main.cf อีกเพื่อให้ virtual user ติดต่อกับ mysql database ครับ
# Virtual mailbox settings
virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_minimum_uid = 150
virtual_uid_maps = static:150
virtual_gid_maps = static:8
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
# SASL Authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
permit
——————————————–
ทำการ เพิ่ม user  “vmail” เข้าไป
# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c “Virtual mailbox” vmail
# mkdir /var/vmail
# chmod 770 /var/vmail/
# chown vmail:mail /var/vmail/
——————————————-
create 4 ไฟล์ที่ใช้ติดต่อระหว่าง postfix กับ mysql ครับ
#vi  /etc/postfix/mysql_virtual_alias_maps.cf

user = root
password = xxx
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
additional_conditions = and active = ‘1’
#query = SELECT goto FROM alias WHERE address=’%s’ AND active = ‘1’
————————————————————————————–
#vi /etc/postfix/mysql_virtual_domains_maps.cf
user = root
password = xxx
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = ‘0′ and active = ‘1’
#query = SELECT domain FROM domain WHERE domain=’%s’ AND backupmx = ‘0′ AND active = ‘1′
————————————————————————————–
#vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = root
password = xxx
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = ‘1′
#query = SELECT quota FROM mailbox WHERE username=’%s’ AND active = ‘1′
————————————————————————————–
#vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = root
password = xxx
hosts = localhost
dbname = postfix
table = mailbox
select_field = CONCAT(domain,’/’,maildir)
where_field = username
additional_conditions = and active = ‘1′
#query = SELECT CONCAT(domain,’/’,maildir) FROM mailbox WHERE username=’%s’ AND active = ‘1′
———————————————–
เพิ่ม config เข้าไปที่ /etc/postfix/master.cf
dovecot unix – n n – – pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d $(recipient)
————————————————
แก้ไข config ที่ dovecot.conf ครับ
## Dovecot configuration file
#
base_dir = /var/run/dovecot/
#
# imap imaps pop3 pop3s (use imaps and pop3s if configured for SSL)
protocols = imap pop3
#
# Uncomment the ssl_listen statements and comment out listen if using SSL
protocol imap {
listen = *:143
# ssl_listen = *:993
}
protocol pop3 {
listen = *:110
# ssl_listen = *:995
}
#
log_timestamp = “%Y-%m-%d %H:%M:%S ”
syslog_facility = mail
#
# Uncomment these if using SSL
#ssl_cert_file = /etc/ssl/mycompany/mailserver/mail-cert.pem
#ssl_key_file = /etc/ssl/mycompany/mailserver/mail-key.pem
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
#ssl_parameters_regenerate = 168
#verbose_ssl = no
#
# ผมแก้ path ที่เก็บเมลใหม่โดย ให้ไปที่ /maildir/vmail ครับ โดยสร้างจาก SAN อีกที
mail_location = maildir:/maildir/vmail/%d/%u
#
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
#
#protocol imap {
#login_executable = /usr/lib/dovecot/imap-login
#mail_executable = /usr/lib/dovecot/imap
#imap_max_line_length = 65536
#}
protocol pop3 {
login_executable = /usr/lib/dovecot/pop3-login
mail_executable = /usr/lib/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
postmaster_address = postmaster@mydomain.com
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
#
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
#
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = nobody
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
#
# If you want client certificates, use these lines
# ssl_require_client_cert = yes
# ssl_username_from_cert = yes
}
—————————————————————-
แก้ไขไฟล์ /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=mail user=mail password=mail
# The new name for MD5 is MD5-CRYPT so you might need to change this depending on version ถ้าใส่เป็น MD5-CRYPT อาจจะ login ไม่ได้น่ะครับ
default_pass_scheme = MD5
# Get the mailbox
user_query = SELECT ‘/maildir/vmail/%d/%n’ as home, ‘maildir:/maildir/vmail/%d/%n’ as mail, 150 AS uid, 8 AS gid, concat(’dirsize:storage=’, quota) AS quota FROM mailbox WHERE username = ‘%u’ AND active = ‘1’
# Get the password
password_query = SELECT username as user, password, ‘/maildir/vmail/%d/%n’ as userdb_home, ‘maildir:/maildir/vmail/%d/%n’ as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = ‘%u’ AND active = ‘1’
# If using client certificates for authentication, comment the above and uncomment the following
#password_query = SELECT null AS password, ‘%u’ AS user
———————————-
update permission ให้มันหน่อยครับ
# chmod 600 /etc/dovecot/*.conf
# chown vmail /etc/dovecot/*.conf
————————————————————-
ต่อไปมาลง drbd ครับ ตาม นี้เลยครับ ทำไว้แล้ว
http://golfreeze.packetlove.com/smileboard/view.php?qID=2

Comments

comments

You may also like

2 Comments

admin February 6, 2008 at 6:04 pm

หากท่านใด มีข้อสงสัย ก็ post ไว้ได้น่ะครับ

golfreeze[at]packetlove.com

golfreeze September 8, 2009 at 10:03 am

สำหรับ dovecot

mail_location = maildir:/maildir/vmail/%d/%u
จะเป็น /maildir/vmail/xxx.com/golf@xxx.com

แต่ถ้าใส่เป็น %n

mail_location = maildir:/maildir/vmail/%d/%n
จะเป็น /maildir/vmail/xxx.com/golf

ครับผม

Leave a Comment