Ubuntu Server 14.04.2 LTS üzerinde default Postfix & Dovecot

“Sistem Ubuntu Server 14.04.2 LTS” sürümünde kurulmuştur.

sudo apt-get update
sudo apt-get dist-upgrade

Güncelleme işlemleri gerçekleştirilir.

Network Ayarları

sudo nano /etc/network/interfaces

Altta örneği verilmiştir:

# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
   address 10.1.200.7
   gateway 10.1.200.1
   netmask 255.255.255.0
   dns-nameservers 10.1.200.1
   dns-search ogr.xxx.edu.tr

Fqdn check edilir:

hostname --fqdn

Çıktı: ogr.xxx.edu.tr

Yukarıdaki çıktıyı elde edemiyorsanız sorun yok alttaki dosyayı editleyin:

sudo nano /etc/hosts
Çıktı:10.1.200.7 ogr.xxx.edu.tr ogr

MySQL

Postfix ile MySQLi konuşturma işlemi

MySQL yükleme

Gerekli paketlerin kurulması işlemi:
sudo apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d \
dovecot-lmtpd dovecot-mysql mysql-server

mysql root şifresini not etmeyi unutmayınız.

Postfix için aşağıdaki ayarları gerçekleyiniz.
General type of mail configuration: Internet Site
System mail name: ogr.xxx.edu.tr

 

MySQL Konfigürasyonu

sudo nano /etc/mysql/my.cnf

Yukarıdaki konfig fileda aşağıdaki satırların olup olmadığı kontrol edilir yoksa eklenir.

bind-address = 127.0.0.1
general_log_file = /var/log/mysql/mysql.log
general_log = 1

Daha sonra servis yeniden başlatılır.

sudo service mysql restart

Database Oluşturma

Postfix için bir veritabanı oluşturulur.
mysqladmin -u root -p create postfix
mysql -u root -p postfix
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| postfix            | -- This is the one we are looking for
+--------------------+
4 rows in set (0.00 sec)

Mysql loglarına bakmak istersek:

tail -fn90 /var/log/mysql/mysql.log

Bizim MySQL kullanıcımızı oluşturmak (Yani postfix için):

mysql -u root -p postfix
GRANT SELECT ON postfix.* TO mail@localhost IDENTIFIED BY 'şifree';
flush privileges;
SELECT USER, password FROM mysql.user WHERE USER = 'mail';
Query OK, 0 rows affected (0.00 sec)


+------+-------------------------------------------+
| user | Password                                  |
+------+-------------------------------------------+
| mail | *E18AD7C50020B1483DHD5OP0D92C2AA45DDDD123 |
+------+-------------------------------------------+
1 row in set (0.00 sec)

Tabloları oluşturma:

USE postfix;
 
DROP TABLE IF EXISTS user;
DROP TABLE IF EXISTS alias;
DROP TABLE IF EXISTS domain;
 
CREATE TABLE domain (
   domain VARCHAR(50) NOT NULL,
   PRIMARY KEY (domain)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
CREATE TABLE user (
   email VARCHAR(255) NOT NULL,
   domain VARCHAR(50) NOT NULL,
   password VARCHAR(110) NOT NULL,
   PRIMARY KEY (email),
   KEY (domain),
   FOREIGN KEY (domain) REFERENCES domain(domain) 
           ON UPDATE NO ACTION ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
CREATE TABLE alias (
   id int(11) unsigned NOT NULL AUTO_INCREMENT,
   source varchar(255) NOT NULL,
   destination varchar(255) NOT NULL,
   PRIMARY KEY (id),
   KEY source_idx (source),
   KEY dest_idx (destination)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Dilersek yukarıdaki kodu deneme.sql olarak kaydedip alttaki gibi import işlemi gibi gömebiliriz:
mysql -u root -p postfix < deneme.sqlmysql -u root -p postfix
mysql> show tables;
+-------------------+
| Tables_in_postfix |
+-------------------+
| alias             |
| domain            |
| user              |
+-------------------+
3 rows in set (0.00 sec)
Bu adımdan sonra yedek almak işinize yarayabilir.!!!!

sudo aptitude install phpmyadmin veya sudo apt-get install phpmyadmin

Üstteki kodla phpmyadmin kurulumu yapılır web server olarak apache seçilir.

sudo nano /etc/apache2/apache2.conf veya sudo pico /etc/apache2/apache2.conf

Üstteki kodla apache konfigürasyon dosyası açılır.

Include /etc/phpmyadmin/apache.conf
Yukarıdaki satır en üste veya en alta eklenebilir.
/etc/init.d/apache2 restart
Üstteki kodla servis yeniden başlatılır.

Sunucununipadresi/phpmyadmin ile webden giriş yapılır.

Postfix

Postfix Konfigürasyonu

master.cf  ve main.cf olarak iki önemli dosyası var bu Postfixin.

sudo nano /etc/postfix/main.cf
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level = may
#Enabling SMTP for authenticated users, and handing off authentication to Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
           permit_mynetworks,
           reject_unauth_destination
mydestination = localhost
virtual_transport = lmtp:unix:private/dovecot-lmtp

Yukarıdaki main.conf ta yapmtığımız işlemleri içerir. Varolanları editledik veya olmayanları ekledik. Dilerseniz bu konfigi kopyalayın yapıştırın yada tek tek check edin.

MySQL için Postfix Map Dosyaları Oluşturma

sudo nano /etc/postfix/mysql-virtual-mailbox-domains.cf
user = mail
hosts = 127.0.0.1
dbname = postfix
password = sifree
query = SELECT domain FROM domain WHERE domain = '%s'
sudo postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
yukarıdaki satırı console da çalıştırdığınızda "/etc/postfix/main.cf" nin altına "virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf" 
eklemesi lazım ekleyip eklemediğini kontrol ediniz.

Kullanıcıları Mapleme

/var/vmail/vhosts/ogr.xxx.edu.tr/
sudo nano /etc/postfix/mysql-virtual-mailbox-maps.cf
user = mail
hosts = 127.0.0.1
dbname = postfix
password = sifree
query = SELECT email FROM user WHERE email='%s'
sudo postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

Mapping aliases to Users

sudo nano /etc/postfix/mysql-virtual-alias-maps.cf
user = mail
hosts = 127.0.0.1
dbname = postfix
password = sifree
query = SELECT destination FROM alias WHERE source = '%s'
sudo postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf
sudo nano /etc/postfix/mysql-virtual-alias-maps-self.cf
user = mail
hosts = 127.0.0.1
dbname = postfix
password = sifree
query = SELECT email FROM user WHERE email = '%s'
sudo postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-virtual-alias-maps-self.cf
izinleri ayarlamak gerek:
sudo chgrp postfix /etc/postfix/mysql-*.cf
sudo chmod 666 /etc/postfix/mysql-*.cf
-rw-rw-rw- 1 root postfix 124 2013-11-12 16:46 /etc/postfix/mysql-virtual-alias-maps.cf
-rw-rw-rw- 1 root postfix 116 2013-11-12 16:46 /etc/postfix/mysql-virtual-alias-maps-self.cf
-rw-rw-rw- 1 root postfix 135 2013-11-12 16:45 /etc/postfix/mysql-virtual-mailbox-domains.cf
-rw-rw-rw- 1 root postfix 114 2013-11-12 16:46 /etc/postfix/mysql-virtual-mailbox-maps.cf

 

sudo service postfix restart 😉

Test kullanıcıları oluşturma

USE postfix;
 
DELETE FROM domain;
DELETE FROM user;
DELETE FROM alias;
 
INSERT INTO domain (domain) VALUES ('ogr.xxx.edu.tr');
 
INSERT INTO user (email, domain, password) VALUES
    ('hp@ogr.xxx.edu.tr', 'ogr.xxx.edu.tr', md5('sifree'));
mysql> SELECT * FROM domain;
+-------------+
| domain      |
+-------------+
|ogr.xxx.edu.tr| +-------------+ 1 rows in set (0.00 sec)  

 mysql> SELECT * FROM user; 
+ | email | domain | password | +
+ | hp@ogr.xxx.edu.tr |ogr.xxx.edu.tr| $6$8a024ade09ec4b2e$70PtLJbZ.S316xiyhSnqm2EzMcbsb68NzFiJPhNTpSZP7dRyDkdRMyZ9cMAw0JODNNTXFtZjP2Eu4.2HPlN8u. | | harry@dragon.lab | dragon.lab | $6$67b5d001ed54ba85$9nTBNbwr3wMgC677PfrLmB7OtEHiyAaXLmYEGjtpI5DO/ZhcYsA520/tupLt.ij191gGlYmokGCQj6seRJtN7. | +------------------+------------+------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)   mysql> SELECT * FROM alias; +----+------------------+-------------------+ | id | source | destination | +----+------------------+-------------------+ | 1 | root | fred@dragon.lab | | 2 | bert@dragon.lab | fred@dragon.lab | | 3 | postmaster@dragon.lab | fred@dragon.lab | | 4 | @dragon.lab | harry@dragon.lab | +----+------------------+-------------------+ 3 rows in set (0.00 sec)
Bazı doğrulamalar yapalım :
sudo postmap -q ogr.xxx.edu.tr mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

Sonuç: “ogr.xxx.edu.tr

sudo postmap -q hp@ogr.xxx.edu.tr mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Sonuç: "hp@ogr.xxx.edu.tr"


Dovecot

Dovecot yükleme

POP3 ve IMAP özellilerini sunucudan getirmek için lazım.

Vmail user oluşturma:

sudo groupadd -g 6004 vmail
sudo useradd -g vmail -u 6004 vmail -d /var/vmail -m -s /sbin/nologin
Kontrol etme:
grep vmail /etc/passwd /etc/group
/etc/passwd:vmail:x:6004:6004::/var/vmail:/sbin/nologin
/etc/group:vmail:x:6004:

Yetkileri düzenleme:

sudo mkdir -p /var/vmail/vhosts/dragon.lab
sudo chown -R vmail:vmail /var/vmail
 
ls -dl /var/vmail/vhosts
drwxr-xr-x 3 vmail vmail 4096 Nov 30 09:52 /var/vmail/vhosts/

Dovecot Konfigürasyonu

Başlamadan bir yedeğini alalım:

cd /etc/dovecot
sudo mkdir backup
sudo cp -a [cdR]* backup
sudo nano /etc/dovecot/dovecot.conf
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf

Yukarıdaki ayarları yap ve kaydet.

sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/vmail/vhosts/%d/%n
mail_privileged_group = vmail
Yukarıdaki ayarları yap ve kaydet.
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
Yukarıdaki ayarları yap ve kaydet.
sudo nano /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
   driver = sql
   args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
   driver = static
   # The home value should be the same as the mail_location from 10-mail.conf
   args = uid=vmail gid=vmail home=/var/vmail/vhosts/%d/%n
}
Yukarıdaki ayarları yap ve kaydet.
sudo nano /etc/dovecot/dovecot-sql.conf.ext
    driver = mysql
    connect = host=127.0.0.1 dbname=postfix user=mail password=sifree
    default_pass_scheme = MD5
    password_query = SELECT email as user, password FROM user WHERE email='%u';
Yukarıdaki ayarları yap ve kaydet.
sudo nano /etc/dovecot/conf.d/10-master.conf

unencrypted IMAP and POP3 için portlar  sıfır yapılır.

service imap-login {
       inet_listener imap {
       port = 0
    }
...
}
 
service pop3-login {
     inet_listener pop3 {
     port = 0
  }
  ...
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     mode = 0600
     user = postfix
     group = postfix
   }
   # Create inet listener only if you can't use the above UNIX socket
   #inet_listener lmtp {
      # Avoid making LMTP visible for the entire internet
      #address =
      #port =
   #}
}
service auth {
    # auth_socket_path points to this userdb socket by default. It's typically
    # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
    # permissions make it readable only by root, but you may need to relax these
    # permissions. Users that have access to this socket are able to get a list
    # of all usernames and get results of everyone's userdb lookups.
    unix_listener /var/spool/postfix/private/dovecot-auth {
       mode = 0666
       user = postfix
       group = postfix
    }
 
    unix_listener auth-userdb {
       mode = 0600
       user = vmail
       #group =
    }
 
    # Postfix smtp-auth
    #unix_listener /var/spool/postfix/private/dovecot-auth {
       # mode = 0666
    #}
 
    # Auth process is run as this user.
    user = dovecot
}

auth-worker block kısmına  alttaki satır eklenir.

user = vmail

Değişiklikleri yap ve kaydet.

Take the SSL cert and key file into use:

sudo nano /etc/dovecot/conf.d/10-ssl.conf
ssl = required

Değişiklikleri kaydet. :-)

sudo nano /etc/dovecot/conf.d/15-lda.conf
postmaster_address = postmaster@ogr.xxx.edu.tr

Değişiklikleri kaydet.

İzinleri güncelle ve dovecotu yeniden başlat.

cd /etc/dovecot
sudo chown -R vmail:dovecot /etc/dovecot/*
sudo chmod 640 *conf *ext conf.d/*
sudo chmod 750 conf.d
 
sudo service dovecot restart

sudo aptitude install roundcube”  ile kurulum tamamlanır.

External 500 hatası alıyorsanız php ile entegrasyon sorunu vardır  “sudo php5enmod mcrypt” ile bu sorun düzeltilir ve apache servisi yeniden başlatılır “sudo service apache2 restart“.

Sunucununipadresi veya localhostla webden giriş yapıldığında default olarak apache sayfası görünecektir.

Roundcube ‘ü yayınlamak için “sudo pico /etc/apache2/sites-available/000-default.conf ” dosyasındaki DocumentRoot /var/www satırı    DocumentRoot/usr/share/roundcube/ ile değiştirilir ve apache servisi yeniden başlatılır “sudo service apache2 restart“.

Sunucununipadresi veya localhostla webden giriş yapıldığında roundcube sayfası giriş için hazırdır.

İlk mailini gönder ……

Setting up Evolution

At this point we can set up Thunderbird or Evolution or any other email client. Using Evolution it is easy to create a new account that points at our new server. I’m sure you can work this out but here is a very quick and dirty description. You will only need one of the IMAP+ or POP3 configurations.

    • Server Type: IMAP+
      • Email address: hp@ogr.xxx.edu.tr.
      • Server Type: IMAP+
      • Server: ogr.xxx.edu.tr
      • Port: 993
      • Username: hp@ogr.xxx.edu.tr.
      • Encryption method: SSL on Dedicated port
      • Authentication: Password
      • Server Type: POP3
        • Email address: hp@ogr.xxx.edu.tr.
        • Server Type: POP3
        • Server: ogr.xxx.edu.tr
        • Port: 995
        • Username: hp@ogr.xxx.edu.tr.
        • Encryption method: SSL on Dedicated port
        • Authentication: Password
        • Server Type: SMTP
          • Server: ogr.xxx.edu.tr
          • Port: 25
          • TICK, Server requires authentication
          • Encryption Mathod: start TLS after connecting
          • Username: hp@ogr.xxx.edu.tr.
          • Auth Type: Login

Yararlanılan kaynak : http://blogging.dragon.org.uk/installing-a-mailserver-on-ubuntu-14-04-lts-part-1/

This entry was posted in Genel.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir