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