Si të konfiguroni një server postfix të postës elektronike me Dovecot: Dynamic Maildirs dhe LMTP
Parathënie
Ky udhëzues bazohet në Si të konfiguroni një server Postfix E-Mail me Dovecot dhe zbulon se ku mbaroi pjesa e parë.
Ju lutemi kaloni fillimisht atë tutorial.
Në këtë artikull, ne do të ndajmë kutitë postare nga llogaritë e sistemit duke përdorur serverin LMTP të dovecot si mekanizëm shpërndarjeje, si dhe do të përdorim postgresql për të mbajtur të dhënat e përdoruesve.
Nuk do të dërgohet më postë në kutitë postare standarde të Linux.
Ashtu si udhëzuesi i parë, ky tutorial bazohet në Debian 7 wheezy, Postfix 2.9 dhe Dovecot 2.1 (+ Postgresql 9.1).
Paketat
Instaloni postgresql:
# aptitude install postgresql postfix-pgsql
Dovecot në versionin 2.1 duhet të vijë tashmë me pgsql të aktivizuar. Nëse jeni në një sistem ku pëllumbi është i modularizuar, vraponi
# aptitude install dovecot-lmtpd dovecot-pgsql
për të instaluar modulet e nevojshme.
Konfigurimi i bazës së të dhënave Postgres
Rregullojeni këtë për nevojat tuaja nëse tashmë keni një konfigurim postgres që po funksionon! Por nga një instalim i ri i postgres, le të vendosim vërtetimin në mënyrë që t'i japim dovecot akses në bazën e të dhënave. Shto sa vijon te /etc/postgresql/9.1/main/pg_ident.conf
:
mailmap dovecot mailreader
mailmap postfix mailreader
mailmap root mailreader
Dhe sa vijon te /etc/postgresql/9.1/main/pg_hba.conf
(Paralajmërim: Sigurohuni që ta shtoni menjëherë pas Vendosni konfigurimin tuaj aktual këtu
bllok komentesh! Përndryshe, një nga hyrjet e paracaktuara mund të kapet i pari dhe vërtetimi i bazës së të dhënave do të dështojë. )
local mail all peer map=mailmap
Më pas ringarkoni postgresql (reload servis postgresql
). Tani vendosni bazën e të dhënave:
# sudo -u postgres psql
postgres=# CREATE USER mailreader;
postgres=# REVOKE CREATE ON SCHEMA public FROM PUBLIC;
postgres=# REVOKE USAGE ON SCHEMA public FROM PUBLIC;
postgres=# GRANT CREATE ON SCHEMA public TO postgres;
postgres=# GRANT USAGE ON SCHEMA public TO postgres;
postgres=# CREATE DATABASE mail WITH OWNER mailreader;
postgres=# \q
# sudo psql -U mailreader -d mail
postgres=# \c mail
mail=# CREATE TABLE aliases (
alias text NOT NULL,
email text NOT NULL
);
mail=# CREATE TABLE users (
email text NOT NULL,
password text NOT NULL,
maildir text NOT NULL,
created timestamp with time zone DEFAULT now()
);
mail=# ALTER TABLE aliases OWNER TO mailreader;
mail=# ALTER TABLE users OWNER TO mailreader;
mail=# \q
Më pas mund të shtoni kuti postare virtuale si kjo, duke filluar nga një rootshell:
# doveadm pw -s sha512 -r 100
Enter new password: ...
Retype new password: ...
{SHA512}.............................................................==
# psql -U mailreader -d mail
mail=# INSERT INTO users (
email,
password,
maildir
) VALUES (
'foo@yourdomain.tld',
'{SHA512}.............................................................==',
'foo/'
);
Ndërfaqja e administrimit (opsionale)
Nëse nuk dëshironi të përdorni ndërfaqen e linjës së komandës për të ruajtur bazën e të dhënave të postës, mund të konfiguroni një ndërfaqe administrimi. Le të shtojmë fillimisht një përdorues të bazës së të dhënave që lejohet vetëm të modifikojë bazën e të dhënave të postës. Kthehuni te /etc/postgresql/9.1/main/pg_hba.conf
dhe shtoni këtë rresht nën linjën e vërtetimit të kolegëve që keni shtuar më parë:
host pgadmin mail 127.0.0.1/32 md5
Kjo do të lejojë lidhjet e prizës lokale në portën 5432. (Porta e parazgjedhur për postgres)
Shto përdoruesin e bazës së të dhënave:
# sudo -u postgres psql
postgres=# CREATE USER pgadmin WITH PASSWORD 'new password';
postgres=# \q
Jepini përdoruesit privilegjet për të redaktuar bazën e të dhënave të postës:
# sudo psql -U mailreader -d mail
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON users TO pgadmin;
mail=> GRANT SELECT, UPDATE, INSERT, DELETE ON aliases TO pgadmin;
mail=> \q
Tani mund të përdorni një ndërfaqe administrimi si pgAdmin që është në gjendje të përdorë tunelizimin SSH për t'u lidhur drejtpërdrejt me bazën e të dhënave, ose mund të konfiguroni diçka si phpPgAdmin.
Konfigurimi i pëllumbave
Ne duhet të lidhim dovecot me bazën e të dhënave dhe të konfigurojmë serverin LMTP. Vendosni një përdorues të ri (dovecot do të refuzojë të trajtojë postën pa një përdorues të sistemit të konfiguruar për të) dhe direktori për maildirs fillimisht: (mund të përdorni /var/mail, por që tradicionalisht përdor formatin mbox , ndërkohë që ne do të përdorim formatin superior të maildir).
# adduser --system --no-create-home --uid 500 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
# mkdir /home/mailboxes
# chown vmail:vmail /home/mailboxes
# chmod 700 /home/mailboxes
Tani ruani konfigurimin e mëposhtëm si /etc/dovecot/dovecot-sql.conf
:
driver = pgsql
connect = host=/var/run/postgresql/ dbname=mail user=mailreader
default_pass_scheme = SHA512
password_query = SELECT email as user, password FROM users WHERE email = '%u'
user_query = SELECT email as user, 'maildir:/home/mailboxes/maildir/'||maildir as mail, '/home/mailboxes/home/'||maildir as home, 500 as uid, 500 as gid FROM users WHERE email = '%u'
Sigurohuni që është në pronësi të root dhe chmodded 600.
Tani hapni /etc/dovecot/dovecot.conf
dhe modifikoni cilësimet passdb
dhe userdb
që të duken kështu:
userdb {
driver = prefetch
}
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
Ndrysho strofën protokolle në
protocols = imap lmtp
dhe shtoni prizën e shërbimit lmtp dhe disa cilësime të protokollit lmtp:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
protocol lmtp {
postmaster_address=postmaster@yourdomain.com
hostname=mail.yourdomain.com
}
Strofa mail_location tani është e tepërt dhe mund të hiqet.
Postfiks
Tani duhet t'i themi postfix-it që të dorëzojë postën direkt te Dovecot. Hapni /etc/postfix/main.cf
dhe shtoni
mailbox_transport = lmtp:unix:private/dovecot-lmtp
deri në fund. Tani duhet të vendosim konfigurimin e bazës së të dhënave për postfix.
Krijo skedarin /etc/postfix/pgsql-aliases.cf
dhe fut:
user=mailreader
dbname=mail
table=aliases
select_field=alias
where_field=email
hosts=unix:/var/run/postgresql
Më pas krijoni skedarin /etc/postfix/pgsql-boxes.cf
dhe futni:
user=mailreader
dbname=mail
table=users
select_field=email
where_field=email
hosts=unix:/var/run/postgresql/
Tani ndryshoni linjën alias_maps në main.cf për ta lexuar
alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf
dhe rreshti local_recipient_maps për të lexuar
local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps
Në tërësi, main.cf juaj duhet të duket i ngjashëm me këtë:
myhostname = mail.mydomain.com
myorigin = mydomain.com
mydestination = mydomain.com, mail.mydomain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
alias_maps = hash:/etc/aliases proxy:pgsql:/etc/postfix/pgsql-aliases.cf
local_recipient_maps = proxy:pgsql:/etc/postfix/pgsql-boxes.cf $alias_maps
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.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
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3
Përfundimi
Tani thjesht ringarkoni:
# postfix reload
# service dovecot restart
Dhe ju jeni gati! Testoni konfigurimin tuaj siç bëtë pas artikullit të parë dhe sigurohuni që posta në postmaster@yourdomain.com
të gjejë rrugën e saj në një kuti postare të ndjekur!
Dërguar nga: Lukas Erlacher.