Mengkonfigurasi Postfix dan Dovecot di Ubuntu

Banyak pengguna Ubuntu menggunakan sistem tidak hanya untuk kebutuhan rumah. Pendekatan ini sepenuhnya dibenarkan, karena pada sistem Linux jauh lebih mudah untuk melakukan pemrograman, membuat server dan situs web. Salah satu kemudahannya adalah pembuatan server email. Untuk pemula, tugas ini akan tampak sangat sulit, tetapi jika Anda mengetahui cara menginstal dan mengkonfigurasi server mail untuk Ubuntu, tugas itu tidak akan terasa terlalu sulit bagi Anda.

Cara mengatur server surat berbasis Ubuntu.

Sedikit teori

Sebelum instruksi spesifik dan fermentasi kode tidak dapat dilakukan tanpa sepersekian materi teoretis. Penting untuk memahami apa itu server email dan cara kerjanya.

Server surat yang dikonfigurasi, secara sederhana, adalah seorang tukang pos yang menerima "surat" dari satu klien email dan memberikannya kepada yang lain. Dalam hal ini, pada prinsipnya, seluruh esensi pekerjaan perangkat lunak ini. Server email diperlukan tidak hanya untuk mengirim email. Di situs tersebut, ia bertanggung jawab untuk mendaftarkan pengguna, mengirimkan formulir, dan tindakan penting lainnya, yang tanpanya situs akan menjadi seperti buku, yang hanya dapat Anda lihat dengan membalik halaman, tetapi sulit untuk melakukan sesuatu.

Server e-mail di Linux sangat berbeda dari yang ada di Windows dan sistem lainnya. Di Windows, ini adalah program tertutup yang sudah jadi, yang hanya bisa mulai digunakan. Distribusi Linux juga membutuhkan pengaturan sendiri dari semua komponen. Dan server pada akhirnya akan terdiri dari bukan satu program, tetapi beberapa. Kami akan menggunakan Postfix dalam kombinasi dengan Dovecot dan MySQL.

Mengapa Postfix?

Ada beberapa klien email di Ubuntu, tetapi kami masih memilih yang ini. Menyiapkan Posfix di Ubuntu jauh lebih mudah daripada SendMail yang sama, dan ini penting untuk pengguna pemula. Dalam kombinasi dengan Dovecot, Postfix mampu melakukan semua yang biasanya diperlukan dari server mail.

Postfix secara langsung adalah agen transfer surat itu sendiri. Dia akan memainkan peran utama dalam seluruh penyerahan. Ini adalah program sumber terbuka yang banyak digunakan oleh server dan situs web. Dovecot adalah agen pengiriman surat. Peran utamanya adalah untuk memastikan keamanan server. MySQL adalah sistem manajemen basis data yang ideal (DBMS) untuk semua situs. Diperlukan untuk menangani informasi yang kami terima dari pengguna server kami.

Jadi, dengan bagian teoretis sudah berakhir. Sekarang perlu berlatih.

Buat server email

Apa yang harus dikonfigurasi sebelum menginstal server mail?

  • MySQL;
  • Zona DNS, Anda harus memiliki FDQN pribadi. Selanjutnya kita akan menggunakan namehost.

Instalasi

Instal program:

apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Ketika jendela konfigurasi Postfix muncul, kita perlu memilih "situs Internet".

Di bawah ini kita akan diminta memasukkan nama domain, gunakan "primer.ru".

Pengaturan MySQL

Sekarang kita perlu mengkonfigurasi tiga tabel untuk data di MySQL: untuk domain, pengguna, dan untuk apa yang disebut Alias ​​- alias atau kotak pesan pengguna tambahan. Di sini kita tidak akan membahas secara terperinci konfigurasi database MySQL.

Mari kita sebut basis data examplemail. Buat database dengan nama berikut:

mysqladmin -p buat servermail

Login di MySQL:

mysql -u root –p

Lalu masukkan kata sandi. Jika semuanya dilakukan dengan benar, akan ada entri di terminal:

mysql>

Buat pengguna baru khusus untuk masuk ke jaringan:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' DIIDENTIFIKASI OLEH 'password';

Sekarang restart MySQL untuk memastikan semua perubahan berhasil diterapkan.

Kami menggunakan database kami untuk membuat tabel berdasarkan itu:

mysql> USE examplemail;

Buat tabel untuk domain:

CREATE TABLE `virtual_domains` (

`id` INT BUKAN AUTO_INCREMENT NULL,

`name` VARCHAR (50) NOT NULL,

KUNCI UTAMA (`id`)

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Buat tabel untuk pengguna:

CREATE TABLE `virtual_users` (

`id` INT BUKAN AUTO_INCREMENT NULL,

`domain_id` INT TIDAK NULL,

`password` VARCHAR (106) BUKAN NULL,

`email` VARCHAR (120) BUKAN NULL,

KUNCI UTAMA (`id`),

KUNCI UNIK `email` (` email`),

KUNCI ASING (domain_id) REFERENSI virtual_domains (id) DI DELETE CASCADE

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Di sini, seperti yang Anda lihat, menambahkan email dan kata sandi. Dan setiap pengguna terikat ke domain.

Akhirnya, buat tabel untuk nama samaran:

CREATE TABLE `virtual_aliases` (

`id` INT BUKAN AUTO_INCREMENT NULL,

`domain_id` INT TIDAK NULL,

`source` varchar (100) NOT NULL,

`destination` varchar (100) NOT NULL,

KUNCI UTAMA (`id`),

KUNCI ASING (domain_id) REFERENSI virtual_domains (id) DI DELETE CASCADE

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Kami telah berhasil mengonfigurasi MySQL dan membuat tiga tabel yang diperlukan. Sekarang Anda harus berurusan dengan domain dan email.

Domain, alamat email, dan alias

Mari kita tambahkan domain kita ke tabel dengan domain. FDQN harus dimasukkan di sana:

INSERT INTO `examplemail`.`virtual_domains`

(`id`, ` name`)

NILAI

('1', 'example.com'),

('2', 'namehost.example.com');

Tambahkan data tentang alamat email ke tabel pengguna:

INSERT INTO `examplemail`.`virtual_users`

(`id`, ` domain_id`, `password`, ` email`)

NILAI

('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' '),

('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' ');

Sekarang tambahkan informasi ke tabel terakhir:

Masukkan ke dalam `examplemail`.`virtual_aliases`

(`id`, ` domain_id`, `source`, ` tujuan`)

NILAI

('1', '1', ' ', ' ');

Tutup MySQL:

mysql> keluar

Pengaturan Postfix

Pindah langsung ke parameter Postfix. Kami membutuhkan klien surat untuk mengirim pesan atas nama pengguna yang dimasukkan ke dalam basis data dan menangani koneksi SMTP. Untuk memulainya, kami akan membuat cadangan file konfigurasi, dalam hal ini dimungkinkan untuk kembali ke pengaturan default:

cp /etc/postfix/main.cf /etc/postfix/main.cf.orig

Sekarang buka file konfigurasi:

nano /etc/postfix/main.cf

Alih-alih nano, Anda dapat menggunakan editor teks apa pun yang nyaman bagi Anda.

Kami akan mengomentari parameter TLS, dan juga menambahkan yang lain. SSL gratis digunakan di sini:

# Parameter TLS

# 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 = ya

#smtpd_tls_session_cache_database = btree: $ {data_directory} / smtpd_scache

#smtp_tls_session_cache_database = btree: $ {data_directory} / smtp_scache

smtpd_tls_cert_file = / etc / ssl / certs / dovecot.pem

smtpd_tls_key_file = / etc / ssl / private / dovecot.pem

smtpd_use_tls = ya

smtpd_tls_auth_only = ya

Setelah itu kami akan menambahkan beberapa parameter lagi:

smtpd_sasl_type = dovecot

smtpd_sasl_path = pribadi / auth

smtpd_sasl_auth_enable = ya

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks

reject_unauth_destination

Kami juga perlu mengomentari pengaturan mydestination dan mengubahnya ke localhost:

#mydestination = example.com, namehost.example.com, localhost.example.com, localhost

mydestination = localhost

Parameter myhostname harus berisi nama domain kami:

myhostname = namehost.example.com

Sekarang tambahkan baris untuk mengirim pesan ke semua domain yang terdaftar di tabel MySQL:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Tambahkan tiga parameter lagi sehingga Postfix dapat terhubung ke tabel MySQL:

virtual_mailbox_domains = mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

virtual_mailbox_maps = mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

virtual_alias_maps = mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Menyiapkan file MySQL dan Postfix

Buat file

mysql-virtual-mailbox-domains.cf

Tambahkan nilai-nilai ini ke dalamnya:

pengguna = usermail

kata sandi = kata sandi email

host = 127.0.0.1

dbname = examplemail

query = SELECT 1 DARI virtual_domains WHERE name = '% s'

Mulai ulang Postfix:

restart layanan postfix

Uji domain untuk Postfix:

postmap -q example.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

Buat file lain:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf

pengguna = usermail

kata sandi = kata sandi email

host = 127.0.0.1

dbname = examplemail

query = SELECT 1 DARI virtual_users WHERE email = '% s'

Reboot Postfix:

restart layanan postfix

Kemudian periksa kembali Postfix:

postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Jika dilakukan dengan benar, harus ditampilkan

Buat file terakhir untuk alias:

nano /etc/postfix/mysql-virtual-alias-maps.cf

pengguna = usermail

kata sandi = kata sandi email

host = 127.0.0.1

dbname = examplemail

query = PILIH tujuan DARI virtual_aliases WHERE source = '% s'

Mulai ulang:

restart layanan postfix

Terakhir kali kami menguji:

postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Penyiapan Dovecot

Kami membuat cadangan untuk tujuh file yang akan diubah:

cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig

Ini adalah perintah sampel. Masukkan enam file yang sama untuk file-file ini:

/etc/dovecot/conf.d/10-mail.conf

/etc/dovecot/conf.d/10-auth.conf

/etc/dovecot/dovecot-sql.conf.ext

/etc/dovecot/conf.d/10-master.conf

/etc/dovecot/conf.d/10-ssl.conf

Buka file pertama:

nano /etc/dovecot/dovecot.conf

Periksa apakah parameter ini dikomentari:

! termasuk conf.d / *. conf

Masukkan:

! include_try /usr/share/dovecot/protocols.d/*.protocol

protokol = imap lmtp

Alih-alih:

! include_try /usr/share/dovecot/protocols.d/*.protocol baris

Edit file berikut:

nano /etc/dovecot/conf.d/10-mail.conf

Temukan baris mail_lokasi, hapus komentar, setel parameter berikut:

mail_location = maildir: / var / mail / vhosts /% d /% n

Temukan mail_privileged_group, letakkan di sana:

mail_privileged_group = email

Kami memeriksa akses. Masukkan perintah:

ls-ld / var / mail

Akses akan terlihat seperti ini:

drwxrwsr-x 3 root vmail 4096 24 Jan 21:23 / var / mail

Buat folder untuk setiap domain terdaftar:

mkdir -p /var/mail/vhosts/example.com

Buat pengguna dan grup dengan ID 5000:

groupadd -g 5000 vmail

useradd -g vmail -u 5000 vmail -d / var / mail

Ubah pemilik menjadi VMail pengguna:

chown -R vmail: vmail / var / mail

Edit file berikut:

nano /etc/dovecot/conf.d/10-auth.conf

Batalkan komentar pada teks otentikasi dan tambahkan baris:

disable_plaintext_auth = ya

Ubah parameter berikut:

auth_mechanisms = login biasa

Mengomentari baris ini:

#! Termasuk auth-system.conf.ext

Tambahkan otorisasi MySQL, komentari:

! termasuk auth-sql.conf.ext

Buat file dengan data untuk otentikasi:

nano /etc/dovecot/conf.d/auth-sql.conf.ext

Masukkan yang berikut ini:

passdb {

driver = sql

args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

driver = statis

args = uid = vmail gid = vmail home = / var / mail / vhosts /% d /% n

}

Edit file berikut:

nano /etc/dovecot/dovecot-sql.conf.ext

Setel parameter MySQL dan komentar:

driver = mysql

Batalkan komentar dan masukkan:

connect = host = 127.0.0.1 dbname = servermail user = usermail password = mailpassword

Temukan baris default_pass_scheme, batalkan komentar dan masukkan parameter:

default_pass_scheme = SHA512-CRYPT

Batalkan komentar dan perkenalkan parameter baru:

password_query = SELECT email sebagai pengguna, kata sandi DARI virtual_users WHERE email = '% u';

Ubah pemilik:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Buka dan edit file:

nano /etc/dovecot/conf.d/10-master.conf

Batalkan komentar dan masukkan parameter:

layanan imap-login {

inet_listener imap {

port = 0

}

Masukkan:

service lmtp {

unix_listener / var / spool / postfix / private / dovecot-lmtp {

mode = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Hindari membuat LMTP terlihat untuk internet

#address =

#port =

#}

}

Ubah konfigurasi berikut:

layanan auth {

unix_listener / var / spool / postfix / private / auth {

mode = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

mode = 0600

pengguna = vmail

#group =

}

#unix_listener / var / spool / postfix / private / auth {

# mode = 0666

#}

user = dovecot

}

Ubah konfigurasi terakhir dalam file ini:

service auth-pekerja {

# Proses pekerja auth

# / etc / shadow. Jika ini tidak perlu

# $ default_internal_user.

pengguna = vmail

}

Jadi, kami akhirnya menyiapkan server surat di Ubuntu. Dan Anda juga dapat menambahkan konfigurasi SSL di sana atau menggunakan yang standar. Untuk melindungi dari spam, Anda dapat mengonfigurasi Spam Assassin agar berfungsi dengan server kami.

Gunakan klien email standar untuk memasukkan informasi ini:

  • Nama pengguna:
  • Kata sandi: email1
  • IMAP: example.com
  • SMTP: example.com