Mysql Destekli E-Posta Sunucu Kurulumu (Postfix+Devecot+Mysql)
En çok kullanılan mail sistemlerinden birisinin kurulumundan bahsedeceğim.
Özetle Debian/Ubuntu + Postfix + Dovecot + SASL/SSL + MySQL yapısı diyebiliriz. Virtual domain ve kullanıcıları MySQL üzerinde tutarak
kolayca domain ve user ekleme olanağı olan kullanışlı bir yapıdır. SMTP yani mail göndermek için POSTFIX, mail almak için DOVECOT ve güvenlik için SSL (OpenSSL) kullanılacaktır.
Bazı dikkat edilmesi gereken değerler var: Örnek kurulumda ana domain olarak “voxporta.com” kullanılmıştır. Bunu değiştirtmeyi unutmayınız. Ayrıca MySQL bağlantı ayarlarınız ve tablo yapınızda değişiklik varsa bunları da değiştirmeyi unutmayınız.
MYSQL Tablolarını Oluştur
Önce Mysql tabloları oluşturulur.
Aşağıdaki örnekte “root” user kullanıldı ancak siz ayrı bir user acarsanız daha iyi olur.
Database olarak leapvox database altında domains, mail_users, mail_forward tablolarını yarattım. root user şifresi “xxx” olarak atanmıştır.
Farklı isimler ve şifre kullanabilirsiniz ama config dosyalarında değiştirmeyi unutmayınız.
Sql Script:
CREATE DATABASE leapvox; USE leapvox; CREATE TABLE domains ( name varchar(100) NOT NULL, PRIMARY KEY (name) ); CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); CREATE TABLE mail_forward (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); INSERT INTO domains (domain) VALUES ('voxporta.com'); INSERT INTO users (email, password) VALUES ('batur.orkun@voxporta.com', ENCRYPT('sifrem'));
GEREKLİ PAKETLERİ YÜKLE
1. paketleri kur
#apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server dovecot-common dovecot-imapd dovecot-pop3d libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailutils
CONF DOSYALARI
Aşağıdaki conf dosyalarını yaratıp içeriklerini örnekte gibi kendi database bilgileriniz ile oluşturun.
2. domains conf dosyasını yarat
# vi /etc/postfix/mysql-virtual_domains.cf
user = root password = xxx dbname = leapvox query = SELECT name AS virtual FROM domains WHERE name='%s' hosts = 127.0.0.1
3. forwarding conf dosyasını yarat
# vi /etc/postfix/mysql-virtual_forwardings.cf
user = root password = xxx dbname = leapvox query = SELECT destination FROM mail_forward WHERE source='%s' hosts = 127.0.0.1
4. forwarding conf dosyasını yarat
# vi /etc/postfix/mysql-virtual_mailboxes.cf
user = root password = xxx dbname = leapvox query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM mail_users WHERE email='%s' hosts = 127.0.0.1
5. mail conf dosyasını yarat
# vi /etc/postfix/mysql-virtual_email2email.cf
user = root password = xxx dbname = leapvox query = SELECT email FROM mail_users WHERE email='%s' hosts = 127.0.0.1
6. Permisson ayarlarını yap
# chmod o= /etc/postfix/mysql-virtual_*.cf
# chgrp postfix /etc/postfix/mysql-virtual_*.cf
7. mailbox için yeni user ve grup ekle ekle
# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m
POSTFIX (SMTP) Ayarları
8.postix ayarlarını yap. bu ayarları “/etc/postfix/main.cf” dosyasını edit ederek de yapabilirsiniz.
postconf -e 'myhostname = voxporta.com' postconf -e 'mydestination =voxporta.com, localhost, localhost.localdomain' postconf -e 'mynetworks = 127.0.0.0/8' postconf -e 'message_size_limit = 30720000' postconf -e 'virtual_alias_domains =' postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf' postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf' postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf' postconf -e 'virtual_mailbox_base = /home/vmail' postconf -e 'virtual_uid_maps = static:5000' postconf -e 'virtual_gid_maps = static:5000' postconf -e 'smtpd_sasl_auth_enable = yes' postconf -e 'broken_sasl_auth_clients = yes' postconf -e 'smtpd_sasl_authenticated_header = yes' postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination' postconf -e 'smtpd_use_tls = yes' postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert' postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key' postconf -e 'virtual_create_maildirsize = yes' postconf -e 'virtual_maildir_extended = yes' postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps' postconf -e virtual_transport=dovecot
SSL ( Secure Connection )
9. SSL yarat (örnekte 365 günlük bir SSL key yaratılıyor )
# cd /etc/postfix
# openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
# chmod o= /etc/postfix/smtpd.key
SASL ile SMTP AUTH ile Postfix yapılandırma (saslauthd)
10. Configure saslauthd to use MySQL
# mkdir -p /var/spool/postfix/var/run/saslauthd
# cp -a /etc/default/saslauthd /etc/default/saslauthd.bak
11. # vi /etc/default/saslauthd
START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
12. # vi /etc/pam.d/smtp
auth required pam_mysql.so user=root passwd=xxx host=127.0.0.1 db=leapvox table=mail_users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=root passwd=xxx host=127.0.0.1 db=leapvox table=mail_users usercolumn=email passwdcolumn=password crypt=1
13. # vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: root sql_passwd: dv1.vox11$ sql_database: leapvox sql_select: select password from mail_users where email = '%u'
14. Permission ayarları
# chmod o= /etc/pam.d/smtp
# chmod o= /etc/postfix/sasl/smtpd.conf
15. Restart All Services
adduser postfix sasl
service postfix restart
service saslauthd restart
16. Configure Dovecot
# vi /etc/postfix/master.cf
dosya sonuna ekle:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
17. dovecot ayarları
# cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak
# vi /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir ssl_cert_file = /etc/ssl/certs/dovecot.pem ssl_key_file = /etc/ssl/private/dovecot.pem namespace private { separator = . prefix = INBOX. inbox = yes } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@voxporta.com mail_plugins = sieve global_script_path = /home/vmail/globalsieverc } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { user = root passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
18. dovecot ile mysql bağlantı bilgisi
# cp -a /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.bak
# vi /etc/dovecot/dovecot-sql.conf
driver = mysql connect = host=127.0.0.1 dbname=leapvox user=root password=xxx default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM mail_users WHERE email='%u';
19. permisssion ayarları
# chgrp vmail /etc/dovecot/dovecot.conf
# chmod g+r /etc/dovecot/dovecot.conf
20. dovecot restart
service dovecot restart
21. Alias ayarları
# vi /etc/aliases
postmaster: root root: postmaster@voxporta.com
22. Service restart
# newaliases
# service postfix restart
TESTLER
23. Test Postfix (SMTP)
#telnet localhost 25
24. Test IMAP
# mutt -f imap://batur.orkun@voxporta.com@localhost
Recent Comments