Debian'da Postfix Mail Sunucusu Kurulumu
Tags: mail, server, postfix
Published: 2022-04-22 06:58:01

[![N|Solid](https://www.postfix.org/mysza.gif)](https://tr.wikipedia.org/wiki/Postfix)

## _Postfix nedir?_

Postfix, Linux ve Unix bilgisayar işletim sistemlerinde bir açık kaynaklı (İngilizce: Mail Transfer Agent; kısaca MTA) e-posta aktarma (ileti) ajanıdır. Postfix 1998 yılında Wietse Zweitze Venema tarafından geliştirildi ve ilk defa VMailer adı altında yayınlandı. Postfix hem emin hem de çabuk ve basitçe yönetmeklidir. Postfix'in kaynak kodu IBM Public License adı altında olup ve böylece bağımsız yazılım onlanıdır.

----

# **Adım 1 -- Debian'da Postfix Posta Sunucusu için İlk Yapılandırmalar**

İlk adımda, root ayrıcalıklarına sahip bir hesapla veya doğrudan root kullanıcısıyla makinenize giriş yapın ve aşağıdaki komutu vererek Debian sisteminizin en son güvenlik yamaları ve yazılım ve paket sürümleriyle güncel olduğundan emin olun.

```sh
apt-get update
apt-get upgrade
```

Bir sonraki adımda, sistem yönetimi için kullanılacak olan aşağıdaki yazılım paketlerini aşağıdaki komutu vererek kurun.

```sh
apt-get install curl net-tools bash-completion wget lsof nano
```

Ardından, kullandığınız metin düzenleyicinizle düzenlemek için **/etc/host.conf** dosyasını açın ve DNS çözünürlüğünün önce hosts dosyasını okuması için dosyanın başına aşağıdaki satırı ekleyin.

```sh
order hosts,bind
multi on
```

Ardından, makinenizin FQDN'sini kurun ve alan adınızı ve sistem FQDN'nizi **/etc/hosts** dosyasına ekleyin. Aşağıdaki gösterildiği gibi alan adını ve FQDN'yi çözmek için sistem IP adresinizi kullanın.

IP adresini ve etki alanını buna göre değiştirin. Ardından, ana bilgisayar adını doğru şekilde uygulamak için makineyi yeniden başlatın.

```sh
hostnamectl set-hostname mail.tecmint.com
echo "192.168.0.102 acik2.lab mail.acik2.lab" >> /etc/hosts
init 6
```

Yeniden başlattıktan sonra , aşağıdaki komut dizilerini vererek ana bilgisayar adının doğru yapılandırılıp yapılandırılmadığını doğrulayın. Sistemin alan adı, FQDN, ana bilgisayar adı ve IP adresi hostname komutu ile döndürülmelidir.

```sh
hostname 
hostname -s 
hostname -f 
hostname -A 
hostname -i 
cat /etc/hostname
```

Ayrıca, aşağıdaki komutları vererek etki alanının yerel sorgulara doğru yanıt verip vermediğini test edin. DNS sunucusu kullanmadığımız için, etki alanının ağınızdaki diğer sistemler tarafından verilen uzak sorguları yeniden yürütmeyeceğini unutmayın.

```sh
getent ahosts mail.acik2.lab
ping acik2.lab
ping mail.acik2.lab
```
----

# **Adım 2 -- Debian'da Postfix Posta Sunucusu Kurulumu**

Bir posta sunucusunun düzgün çalışması için gereken en önemli yazılım parçası MTA aracısıdır. MTA , posta sunucuları arasında posta aktarımından sorumlu olan bir sunucu-istemci mimarisinde oluşturulmuş bir yazılımdır .

Bu kılavuzda , posta aktarım aracısı olarak Postfix'i kullanacağız. Debian'a resmi depolardan postfix yüklemek için aşağıdaki komutu yürütün.

```sh
apt-get install postfix 
```

Postfix kurulum işlemi sırasında size bir dizi soru sorulacaktır. İlk istemde, Postfix yapılandırması için genel tip olarak İnternet Sitesi seçeneğini seçin ve devam etmek için [enter] tuşuna basın ve ardından aşağıdaki ekran görüntülerinde gösterildiği gibi alan adınızı sistem posta adına ekleyin.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d6vidinnzxutbo3fjaa0.png) 
 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9d00rpm0knejh80o3pt7.png)
 
 
----

# **Adım 3 -- Debian'da Postfix Posta Sunucusunu Yapılandırma**

Ardından, Postfix ana yapılandırma dosyasını yedekleyin ve aşağıdaki komutları kullanarak etki alanınız için Postfix'i yapılandırın.

```sh
cp /etc/postfix/main.cf{,.backup}
nano /etc/postfix/main.cf
```

Şimdi gösterildiği gibi main.cf dosyasında Postfix yapılandırmasını yapılandırın .

```sh
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
```

myhostname , mydomain ve mynetworks değişkenlerini kendi yapılandırmalarınıza uyacak şekilde değiştirin .

Aşağıdaki ekran görüntüsünde gösterildiği gibi, Postfix ana yapılandırma dosyasını boşaltmak ve olası hataları kontrol etmek için postconf -n komutunu çalıştırabilirsiniz .

```sh
postconf -n
```

Tüm yapılandırmalar yapıldıktan sonra, değişiklikleri uygulamak için Postfix arka plan programını yeniden başlatın ve netstat komutunu çalıştırarak Postfix ana hizmetinin port 25'e bağlanıp bağlanmadığını inceleyerek hizmetin çalışıp çalışmadığını doğrulayın .

```sh
systemctl restart postfix
systemctl status postfix
netstat -tlpn
```

#### Postfix Posta Sunucusunu  Debian'da Test Edelim

Postfix'in posta transferini işleyip işlemediğini test etmek için önce aşağıdaki komutu çalıştırarak mailutils paketini kuralım.

```sh
apt-get install mailutils
```

Ardından, posta komut satırı yardımcı programını kullanarak , kök hesaba bir posta gönderin ve posta kuyruğunu kontrol etmek ve kökün ana Maildir dizininin içeriğini listelemek için aşağıdaki komutu vererek postanın başarıyla iletilip iletilmediğini kontrol edin.

```sh
echo "mail body"| mail -s "test mail" root
mailq
mail
ls Maildir/
ls Maildir/new/
cat Maildir/new/[TAB]
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwy3mezg8u9aoysyslks.png)
 

----

# **Adım 4 -- Dovecot IMAP'yi Debian'da Kuralım ve Yapılandıralım**

E-posta mesajlarını yerel bir alıcının posta kutularına teslim etmek için bu kılavuzda kullanacağımız posta dağıtım aracısı Dovecot IMAP'dir . IMAP , postaları birden çok e-posta istemcisi arasında okumaktan, silmekten veya taşımaktan sorumlu olan 143 ve 993 ( SSL ) bağlantı noktalarında çalışan bir protokoldür .

IMAP protokolü ayrıca, her mesajın bir kopyasının sunucuya kaydedildiğinden emin olmak için senkronizasyon kullanır ve kullanıcıların e-postaları sıralamak için sunucuda birden fazla dizin oluşturmasına ve postaları bu dizinlere taşımasına olanak tanır.

POP3 protokolünde durum böyle değildir . POP3 protokolü, kullanıcıların postalarınızı sıralamak için sunucuda birden çok dizin oluşturmasına izin vermez. Yalnızca postayı yönetmek için gelen kutusu klasörünüz var.

Dovecot çekirdek sunucusunu ve Dovecot IMAP paketini Debian'a kurmak için aşağıdaki komutu yürütelim:

```sh
apt install dovecot-core dovecot-imapd
```

Dovecot sisteminize kurulduktan sonra aşağıdaki dovecot dosyalarını düzenlemek için açın ve aşağıdaki değişiklikleri yapın. İlk olarak, /etc/dovecot/dovecot.conf dosyasını açın, aşağıdaki satırı arayın ve yorumunu(#) kaldırın:

```sh
listen = *, ::
```

Ardından, düzenlemek için /etc/dovecot/conf.d/10-auth.conf dosyasını açın ve aşağıdaki satırları bulun ve aşağıdaki alıntıdaki gibi görünecek şekilde değiştirin.

```sh
disable_plaintext_auth = no
auth_mechanisms = plain login
```

/etc/dovecot/conf.d/10-mail.conf dosyasını açın ve e-postaları saklamak için Mbox formatı yerine Maildir konumunu kullanmak için aşağıdaki satırı ekleyin . Ve Mbox satırını yoruma alın.

```sh
mail_location = maildir:~/Maildir
```

Düzenlenecek son dosya /etc/dovecot/conf.d/10-master.conf . Burada Postfix smtp-auth bloğunu arayın ve aşağıdaki değişikliği yapın:

```sh
#Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }
```

Yukarıdaki tüm değişiklikleri yaptıktan sonra, değişiklikleri yansıtmak için Dovecot programını yeniden başlatın, durumunu kontrol edin ve aşağıdaki komutları vererek Dovecot'un bağlantı noktası 143'e bağlanıp bağlanmadığını doğrulayın.

```sh
systemctl restart dovecot.service 
systemctl status dovecot.service 
netstat -tlpn
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5h2rgc6y0bd9tyf6dl18.png)

Sisteme yeni bir kullanıcı hesabı ekleyerek posta sunucusunun düzgün çalışıp çalışmadığını test edin ve SMTP sunucusuna bağlanmak için telnet veya netcat komutunu kullanın ve aşağıdaki alıntılarda gösterildiği gibi yeni eklenen kullanıcıya yeni bir posta gönderin.

```sh
# adduser matie
# nc localhost 25
# ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1s9zn6jdg4tp24rer12v.png)
 

Aşağıdaki ekran görüntüsünde gösterildiği gibi kullanıcının ana dizininin içeriğini listeleyerek postanın yeni kullanıcı posta kutusuna gelip gelmediğini kontrol edin.

```sh
ls /home/test_mail/Maildir/new/
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0wrmhd01ivcqiixjfzbz.png)
 

Ayrıca, aşağıdaki alıntıda gösterildiği gibi, komut satırından IMAP protokolü aracılığıyla kullanıcının posta kutusuna bağlanabilirsiniz. Yeni posta, kullanıcının Gelen Kutusu'nda listelenmelidir.

```sh
# nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT
```

Rainloop Kurulum Dokümanıyla Devam Edelim...