4. Postfix/Courier için MySQL Database’ i oluşturma

Öncelikle MySQL root userı için bir şifre belirleyelim bu güvenliğimiz için gerekli;

mysqladmin -u root password dinopsys

yukarıdaki komut ile birlikte artık mysql root userinin şifresi “dinopsys” tir.

mysqladmin -u root -p create mail

bu komut ile de mail isimli bir database oluşturalım.

ve MySQL shell’ ine geçip gerekli kullanıcı tanımlamalarını yapalım;

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO ‘mail_admin’@’localhost’ IDENTIFIED BY ‘mail_admin_sifre’;
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO ‘mail_admin’@’localhost.localdomain’ IDENTIFIED BY ‘mail_admin_sifre’;
FLUSH PRIVILEGES; 

yukarıdaki komutlarda; mail_admin isimli db kullanicisinin mail_admin_sifre sifresi ile mail db’ sine erisim yetkisini tanimladik.

USE mail;

CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;

CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;

CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT ‘10485760’,
PRIMARY KEY (email)
) TYPE=MyISAM;

CREATE TABLE transport (
domain varchar(128) NOT NULL default ”,
transport varchar(128) NOT NULL default ”,
UNIQUE KEY domain (domain)
) TYPE=MyISAM;

quit;

Simdi olusturdugumuz tablolara bakalim;

domains tablosu, domainlerin kayitli olacağı tablo örneğin dinopsys.net

forwardings tablosu,yönlendirmeler için, örneğin  fikri@dinopsys.net mailina gelen maillari fd@dinopsys.net adresine yonlendirmek icin..

users tablosu, kullanıcılar(emaillar) için

transport farkli smtp lere taşıımak için…

Şimdi postfixi mysql ile çalışacak şekilde konfigüre edelim,

vi /etc/mysql/my.cnf

my.cnf dosyasini acin ve bu satirin aktif olduğuna emin olun

[…]
bind-address            = 127.0.0.1
[…]

Eger my.cnf de herhangi bir değişiklik yaparsanız MySQL’ i aşağıdaki komutla yeniden başlatın

/etc/init.d/mysql restart

 

Aşağıdaki dosyaları sırasıyla oluşturun;

vi /etc/postfix/mysql-virtual_domains.cf

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain=’%s’
hosts = 127.0.0.1

 vi /etc/postfix/mysql-virtual_forwardings.cf

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT destination FROM forwardings WHERE source=’%s’
hosts = 127.0.0.1

vi /etc/postfix/mysql-virtual_mailboxes.cf

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,’@’,-1),’/’,SUBSTRING_INDEX(email,’@’,1),’/’) FROM users WHERE email=’%s’
hosts = 127.0.0.1

 vi /etc/postfix/mysql-virtual_email2email.cf

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT email FROM users WHERE email=’%s’
hosts = 127.0.0.1

vi /etc/postfix/mysql-virtual_transports.cf 

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT transport FROM transport WHERE domain=’%s’
hosts = 127.0.0.1

vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf

user = mail_admin
password = mail_admin_sifre
dbname = mail
query = SELECT quota FROM users WHERE email=’%s’
hosts = 127.0.0.1

Oluşturduğumuz bu dosyaların modlarını ayarlıyalım;

chmod o= /etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf

Simdi vmail kullanıcı ve grubunu /home/vmail home dizini olmak sekliyle oluşturalım;

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Şimdi Postfix ayarlarımızı yapacağız; mail.dinopsys.net gördüğünüz yerleri kendi domaininizle değiştirebilirsiniz;

postconf -e ‘myhostname = mail.dinopsys.net’
postconf -e ‘mydestination = mail.dinopsys.net, localhost, localhost.localdomain’
postconf -e ‘mynetworks = 127.0.0.0/8’
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_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 ‘transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf’
postconf -e ‘virtual_create_maildirsize = yes’
postconf -e ‘virtual_mailbox_extended = yes’
postconf -e ‘virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf’
postconf -e ‘virtual_mailbox_limit_override = yes’
postconf -e ‘virtual_maildir_limit_message = “The user you are trying to reach is over quota.”‘
postconf -e ‘virtual_overquota_bounce = 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’

SSL Sertifikası oluşturalım;

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

çıkan sorulara cevap verelim…

smtpd.key’ in modunu ayarlıyalım;

chmod o= /etc/postfix/smtpd.key

Devamı Part  3 te..

 

 

Categories:

Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir