GNU/Linux >> Belajar Linux >  >> Ubuntu

Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 14.04LTS)

Tutorial ini adalah Hak Cipta (c) 2014 oleh Falko Timme &Srijan Kishore. Ini berasal dari tutorial dari Christoph Haas yang dapat Anda temukan di http://workaround.org. Anda bebas menggunakan tutorial ini di bawah lisensi Creative Commons 2.5 atau versi yang lebih baru.

Dokumen ini menjelaskan cara menginstal server email Postfix yang didasarkan pada pengguna dan domain virtual, yaitu pengguna dan domain yang ada di database MySQL. Saya juga akan mendemonstrasikan instalasi dan konfigurasi Courier (Courier-POP3, Courier-IMAP), sehingga Courier dapat mengautentikasi terhadap database MySQL yang sama yang digunakan Postfix.

Server Postfix yang dihasilkan mampu SMTP-AUTH dan TLS dan kuota (kuota tidak ada di dalam Postfix secara default, saya akan menunjukkan cara menambal Postfix Anda dengan tepat). Sandi disimpan dalam terenkripsi formulir di database (sebagian besar dokumen yang saya temukan berurusan dengan kata sandi teks biasa yang merupakan risiko keamanan). Selain itu, tutorial ini mencakup pemasangan Amavisd , SpamAssassin dan ClamAV sehingga email akan dipindai dari spam dan virus. Saya juga akan menunjukkan cara memasang SquirrelMail sebagai antarmuka webmail sehingga pengguna dapat membaca dan mengirim email serta mengubah kata sandi mereka.

Keuntungan dari pengaturan "virtual" seperti itu (pengguna dan domain virtual dalam database MySQL) adalah kinerjanya jauh lebih baik daripada pengaturan yang didasarkan pada pengguna sistem "nyata". Dengan penyiapan virtual ini, server email Anda dapat menangani ribuan domain dan pengguna. Selain itu, lebih mudah untuk diadministrasikan karena Anda hanya perlu berurusan dengan database MySQL ketika Anda menambahkan pengguna/domain baru atau mengedit yang sudah ada. Tidak ada lagi perintah postmap untuk membuat file db, tidak ada lagi reload Postfix, dll. Untuk administrasi database MySQL Anda dapat menggunakan alat berbasis web seperti phpMyAdmin yang juga akan diinstal di howto ini. Keuntungan ketiga adalah pengguna memiliki alamat email sebagai nama pengguna (bukan nama pengguna + alamat email) yang lebih mudah dipahami dan diingat.

Howto ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.

Dokumen ini datang tanpa jaminan apapun! Saya ingin mengatakan bahwa ini bukan satu-satunya cara untuk mengatur sistem seperti itu. Ada banyak cara untuk mencapai tujuan ini tetapi ini adalah cara yang saya ambil. Saya tidak memberikan jaminan apa pun bahwa ini akan berhasil untuk Anda!

1 Catatan Awal

Tutorial ini didasarkan pada Server Ubuntu 14.04 (Trusty Tahr), jadi Anda harus menyiapkan instalasi server dasar Ubuntu 14.04 sebelum melanjutkan dengan tutorial ini. Sistem harus memiliki alamat IP statis. Saya menggunakan 192.168.0.100 sebagai alamat IP saya dalam tutorial ini dan server1.example.com sebagai nama host.

Pastikan Anda login sebagai root (ketik

sudo su

untuk menjadi root), karena kita harus menjalankan semua langkah dari tutorial ini sebagai pengguna root.

Sangat penting bagi Anda untuk membuat /bin/sh sebagai symlink ke /bin/bash...

dpkg-konfigurasi ulang tanda hubung

Gunakan tanda hubung sebagai shell sistem default (/bin/sh)? <-- Tidak

... dan Anda menonaktifkan AppArmor, jika Anda mendapatkan  apparmor:unrecognized service, hapus dari update-rc.d

service apparmor berhenti
update-rc.d -f apparmor hapus
apt-get hapus apparmor apparmor-utils

2 Instal Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Untuk menginstal Postfix, Courier, Saslauthd, MySQL, dan phpMyAdmin, kita cukup menjalankan

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server kurir-authdaemon kurir-authlib-mysql kurir-pop kurir-pop-ssl kurir-imap kurir-imap-ssl libsasl2-2 libsasl2-modul libsasl2-modul -sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Anda akan ditanya beberapa pertanyaan:

Kata sandi baru untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Ulangi kata sandi untuk pengguna "root" MySQL:<-- yourrootsqlpassword
Buat direktori untuk administrasi berbasis web? <-- Tidak
Jenis umum konfigurasi email:<-- Situs Internet
Nama email sistem:<-- server1.example.com
Diperlukan sertifikat SSL <-- Oke
Server web untuk mengkonfigurasi ulang secara otomatis:<-- apache2
Konfigurasi database untuk phpmyadmin dengan dbconfig-common? <-- Tidak

3 Terapkan Patch Kuota Ke Postfix

Kita harus mendapatkan sumber Postfix, menambalnya dengan tambalan kuota, membangun paket .deb Postfix baru dan menginstal paket .deb tersebut:

apt-get build-dep postfix

Beberapa waktu Anda bisa mendapatkan kesalahan sebagai berikut:-

[email protected]:~# apt-get build-dep postfix
Membaca daftar paket... Selesai
Membuat pohon dependensi     
Membaca informasi status... Selesai
E:Anda harus menempatkan beberapa URI 'sumber' di sources.list Anda
[email protected]:~#

Anda dapat memperbaikinya sebagai berikut, dengan menambahkan repositori sumber:

vi /etc/apt/sources.list

Buat entri seperti dalam kasus saya adalah

deb http://archive.ubuntu.com/ubuntu trusty main limited universe
deb http://archive.ubuntu.com/ubuntu trusty-updates main limited universe
deb http://security.ubuntu .com/ubuntu trusty-security main terbatas semesta multiverse
deb http://archive.canonical.com/ubuntu mitra terpercaya


deb-src http://archive. ubuntu.com/ubuntu alam semesta terbatas utama terpercaya
deb-src http://archive.ubuntu.com/ubuntu trusty-updates alam semesta terbatas utama
deb-src http://security.ubuntu.com/ ubuntu trusty-security utama semesta terbatas multiverse
deb-src http://archive.canonical.com/ubuntu trusty partner

Selanjutnya

apt-get update
apt-get build-dep postfix

cd /usr/src
apt-get source postfix

(Pastikan Anda menggunakan versi Postfix yang benar pada perintah berikut. Saya telah menginstal Postfix 2.11.0. Anda dapat mengetahui versi Postfix Anda dengan menjalankan

postconf -d | grep mail_version

Outputnya akan terlihat seperti ini:

[dilindungi email]:/usr/src# postconf -d | grep mail_version
mail_version =2.11.0
milter_macro_v =$mail_name $mail_version
[email protected]:/usr/src#


wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 <../postfix-vda-v13 -2.10.0.patch

Selanjutnya buka debian/rules dan ubah DEB_BUILD_HARDENING dari 1 menjadi 0:

vi debian/aturan

[...]
export DEB_BUILD_HARDENING=0
[...]

Jika Anda tidak melakukannya, build Anda akan gagal dengan pesan kesalahan berikut:

maildir.c:Dalam fungsi âdeliver_maildirâ:
maildir.c:974:17:error:format not string literal dan tidak ada argumen format [-Werror=format-security]
maildir.c:977:17 :error:format bukan literal string dan tidak ada argumen format [-Werror=format-security]
maildir.c:983:17:error:format bukan string literal dan tidak ada argumen format [-Werror=format-security ]
maildir.c:986:17:error:format not string literal dan tidak ada argumen format [-Werror=format-security]
maildir.c:Dalam fungsi âsql2fileâ:
maildir. c:404:25:warning:mengabaikan nilai balik 'read', dideklarasikan dengan atribut warn_unused_result [-Wunused-result]
maildir.c:417:26:warning:mengabaikan nilai kembalian 'write', dideklarasikan dengan atribut warn_unused_result [- Wunused-result]
cc1:beberapa peringatan diperlakukan sebagai kesalahan
make:*** [maildir.o] Kesalahan 1
make:Meninggalkan direktori `/usr/src/postfix-2.11. 0/src/virtual'
make[1]:*** [update] Error 1
make[1]:Meninggalkan direktori `/usr/src/postfi x-2.11.0'
make:*** [build] Error 2
dpkg-buildpackage:error:debian/rules build memberi error exit status 2
[email protected]:/usr /src/postfix-2.11.0#

Sekarang kita dapat membangun paket .deb Postfix baru:

dpkg-buildpackage

Sekarang kita naik satu direktori, di situlah paket .deb baru telah dibuat:

cd..

Perintah

ls -l

menunjukkan kepada Anda paket yang tersedia:


[email protected]:/usr/src# ls -l
total 6824
drwxr-xr-x 18 root root    4096 30 Apr 04:28 postfix-2.11.0
-rw-r --r--  1 root root   46756 Apr 30 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r--  1 root root  142842 30 Apr 04:28 postfix-dev_2.11.0 -1_all.deb
-rw-r--r--  1 root root  851842 30 Apr 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r--  1 root root   53898 Apr 30 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   48500 Apr 30 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   48610 30 Apr 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   48324 30 Apr 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r--  1 root root   55701 Jun  7  2013 postfix-vda-v13-2.10.0.patch
-rw-r-- r--  1 root root  267855 30 Apr 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r--  1 root root    1522 Apr 30 04:27 postfix_2.11.0-1.dsc
-rw-r--r--  1 root root    3885 30 Apr 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r--  1 root root 1329238 30 Apr 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r--  1 root root 4034741 12 Feb 01:38 postfix_2.11.0.orig.tar .gz
[email protected]:/usr/src# 

Pilih paket postfix dan postfix-mysql dan instal seperti ini:

dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb

4 Membuat Database MySQL Untuk Postfix/Courier

Sekarang kita membuat database bernama mail:

mysqladmin -u root -p buat email

Anda akan ditanyai pertanyaan ini:

Masukkan Kata Sandi:<--yourrootsqlpassword

Selanjutnya, kita pergi ke shell MySQL:

mysql -u root -p

Di shell MySQL, kami membuat pengguna mail_admin dengan passwort mail_admin_password (ganti dengan kata sandi Anda sendiri) yang memiliki hak istimewa SELECT,INSERT,UPDATE,DELETE pada database email. Pengguna ini akan digunakan oleh Postfix dan Courier untuk terhubung ke database email:

GRANT SELECT, INSERT, UPDATE, DELETE PADA email.* UNTUK 'mail_admin'@'localhost' DIIDENTIFIKASI DENGAN 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* UNTUK 'mail_admin'@'localhost. domain lokal' DIIDENTIFIKASI DENGAN 'mail_admin_password';
HAK ISTIMEWA FLUSH;

Masih di shell MySQL, kami membuat tabel yang dibutuhkan oleh Postfix dan Courier:

GUNAKAN email;

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

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

CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
kuota INT(10) DEFAULT '10485760',
PRIMARY KEY (email )
) ENGINE=MyISAM;

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

berhenti;

Seperti yang mungkin Anda perhatikan, dengan berhenti; perintah kami telah meninggalkan shell MySQL dan kembali ke shell Linux.

domain tabel akan menyimpan setiap domain virtual tempat Postfix harus menerima email (mis. example.com ).

domain
contoh.com

Penerusan tabel adalah untuk aliasing satu alamat email ke yang lain, mis. teruskan email untuk [email protected] ke .

sumber tujuan
[email dilindungi] [dilindungi email]

pengguna tabel menyimpan semua pengguna virtual (yaitu alamat email, karena alamat email dan nama pengguna sama) dan kata sandi (dalam terenkripsi form!) dan nilai kuota untuk setiap kotak surat (dalam contoh ini nilai defaultnya adalah 10485760 byte yang berarti 10MB).

email sandi kuota
[email dilindungi] Tidak9.E4skNvGa. ("rahasia" dalam bentuk terenkripsi) 10485760

transportasi tabel adalah opsional, ini untuk pengguna tingkat lanjut. Ini memungkinkan untuk meneruskan email untuk pengguna tunggal, seluruh domain atau semua email ke server lain. Misalnya,

domain transportasi
contoh.com smtp:[1.2.3.4]

akan meneruskan semua email untuk example.com melalui protokol smtp ke server dengan alamat IP 1.2.3.4 (tanda kurung siku [] berarti "jangan mencari data MX DNS" (yang masuk akal untuk alamat IP...). Jika Anda menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN), Anda tidak akan menggunakan tanda kurung siku.).

BTW, (Saya berasumsi bahwa alamat IP dari sistem server email Anda adalah 192.168.0.100) Anda dapat mengakses phpMyAdmin melalui http://192.168.0.100/phpmyadmin/ di browser dan masuk sebagai mail_admin. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengatur server email Anda.


Ubuntu
  1. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 14.04LTS

  2. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 13.10)

  3. Server surat dengan pengguna dan domain virtual menggunakan Postfix dan Dovecot pada CentOS 6 VPS

  1. Menginstal Lighttpd Dengan PHP5 (PHP-FPM) Dan Dukungan MySQL Di Ubuntu 14.04LTS

  2. Pengguna Virtual Dan Domain Dengan Postfix, Courier Dan MySQL (Ubuntu 6.10 Edgy Eft)

  3. Pengguna dan Domain Virtual Dengan Sendmail

  1. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 8.04 LTS)

  2. Pengguna dan Domain Virtual Dengan Postfix, Courier, MySQL, dan SquirrelMail (Ubuntu 8.10)

  3. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.10