E-posti serveri paigaldus: Difference between revisions
No edit summary |
No edit summary |
||
Line 60: | Line 60: | ||
Alustuseks tuleks kontrollida, millised tegevused on tulemüüri poolt üldse lubatud. Tulemüüri tarkvarasid on ka mitmeid ning seetõttu tuleks vajalik seadistamine teha vastavalt sellele, millist müüri kasutatakse. Põhimõtted on ikkagi samad - vajalikud pordid peavad olema väljast sisse liikluseks avatud - SMTP, HTTP, IMAP, SSH | Alustuseks tuleks kontrollida, millised tegevused on tulemüüri poolt üldse lubatud. Tulemüüri tarkvarasid on ka mitmeid ning seetõttu tuleks vajalik seadistamine teha vastavalt sellele, millist müüri kasutatakse. Põhimõtted on ikkagi samad - vajalikud pordid peavad olema väljast sisse liikluseks avatud - SMTP, HTTP, IMAP, SSH | ||
Postfix | |||
Pane oma serveri nimi kirja. Näiteks mail.minudomeen.ee kus minudomeen asenda oma domeeninimega. | |||
sudo vi /etc/mailname | |||
Nüüd ava peamine postfixi konfiguratsiooni fail. | |||
sudo vi /etc/postfix/main.cf | |||
Alustuseks määra ära oma serveri nimi | |||
# This is already done in /etc/mailname | |||
#myhostname= mail.example.com | |||
Järgmisena määra ära domeen, millelt saadetakse kirju. See võib olla terve serveri nimi või lihtsalt domeeninimi.domain name. | |||
# myorigin=/etc/mailname | |||
myorigin=example.com | |||
Nüüd otsusta, mida kirjutada tervituse bannerisse. Ei midagi sellist, mis potensiaalsele häkkerile abiks oleks... | |||
smtpd_banner = $myhostname ESMTP $mail_name | |||
Nüüd otsusta, kuidas kirjade saatmine toimub. Selleks on põhiliselt kaks võimalust. Saadad ise või läbi oma teenusepakkuja SMTP serveri. See sõltub ka sellest, mida sinu teenusepakkuja võimaldab. Ise saatmise võimalikud tagasilöögid on, et teenusepakkuja ei luba sul omal SMTP teenust jooksutada (pordid kinni), paljud meiliserverid ei võta dünaamilise DNS kirjega serveritelt kirju vastu ja sul on suurem võimalus enda paljastamiseks ründajatele. Ehk siis rohkem tööd oma serveriga. Samas on sul võimalik kirjade saatmist paremini manageerida. | |||
# leave blank to do it yourself | |||
relayhost = | |||
# or put it an accessible smtp server | |||
relayhost = smtp.yourisp.com | |||
Järgnusena võrgu seadistamine. Võta vastu ühendusi igalt poolt ja usalda vaid seda masinat. | |||
inet_interfaces = all | |||
mynetworks_style = host | |||
Sa võid maskeerida väljuvaid aadresseid. Näiteks sinu masina nimi on mail.domain.com aga sa ei taha, et väljuvale kiri saadetakse aadressilt username@mail.domain.com, vaid sa eelistad username@domain.com. | |||
# masquerade_domains = mail.example.com www.example.com !sub.dyndomain.com | |||
# masquerade_exceptions = root | |||
Kuna kasutame virtuaalseid domeene peavad need olema tühjad. | |||
local_recipient_maps = | |||
mydestination = | |||
Nüüd mõned numbrid. | |||
# kui pikalt oodata enne saatja teavitamist ebaõnnestunud saatmisest | |||
delay_warning_time = 4h | |||
# on see ajutine või lõplik viga | |||
unknown_local_recipient_reject_code = 450 | |||
# kui kaua hoida kirja järjekorras enne vea andmist | |||
maximal_queue_lifetime = 7d | |||
# max ja min aeg sekundites enne kordussaatmist kui ühendus katkeb | |||
minimal_backoff_time = 1000s | |||
maximal_backoff_time = 8000s | |||
# kui kaua oodata serveriga ühenduse loomist | |||
smtp_helo_timeout = 60s | |||
# kui palju adressaate võib olla ühel kirjal - aitab masspostituse vastu | |||
smtpd_recipient_limit = 16 | |||
# vigade arv taandumiseks | |||
smtpd_soft_error_limit = 3 | |||
# vigade arv blokeerimiseks | |||
smtpd_hard_error_limit = 12 | |||
Nüüd mõned piirangud. Iga seadistus on tegelikult ainult ühel real. | |||
# HELO sõnumi piirangud | |||
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit | |||
# Saatja detailide piirangud | |||
smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit | |||
# Piirangud ühenduvale serverile | |||
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org | |||
# Saaja aadressi piirangud | |||
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, permit | |||
smtpd_data_restrictions = reject_unauth_pipelining | |||
# Nõua korrektset HELO sõnumit | |||
smtpd_helo_required = yes | |||
# Kuluta spämmerite aega enne tagasilükkamist | |||
smtpd_delay_reject = yes | |||
disable_vrfy_command = yes | |||
Virtuaalse domeeni seadistused. | |||
alias_maps = hash:/etc/postfix/aliases | |||
alias_database = hash:/etc/postfix/aliases | |||
# kus asuvad virtuaalse postkasti kaustad | |||
virtual_mailbox_base = /var/spool/mail/virtual | |||
# iga postkasti asukoht igale kasutajale | |||
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf | |||
# aliastele | |||
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf | |||
# domain lookups | |||
virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf | |||
# transport_maps = mysql:/etc/postfix/mysql_transport.cf | |||
Võid otsida üles kirja failide omaniku ja siis vaadata tema uid ja gid väärtused. Mina tegin selleks eraldi kasutaja (virtual) ja lisasin sellise rea: | |||
virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 | |||
Vaja on seadistada ka aliase fail. Seda kasutatakse vaid lokaalselt. | |||
sudo cp /etc/aliases /etc/postfix/aliases | |||
sudo postalias /etc/postfix/aliases | |||
Näitena minu /etc/aliases faili sisu: | |||
# See man 5 aliases for format | |||
postmaster: root | |||
clamav: root | |||
Nüüd tuleb luua kaust, kuhu virtuaalne post pannakse See võib olla ka juba apt-get poolt tehtud. Kindlasti loo ka kasutaja, kes oleks nende kaustade omanik. | |||
sudo mkdir /var/spool/mail/virtual | |||
sudo groupadd --system virtual -g 5000 | |||
sudo useradd --system virtual -u 5000 -g 5000 | |||
sudo chown -R virtual:virtual /var/spool/mail/virtual | |||
Postfix'i MySQL seadistus | |||
Meil on vaja failid, et teha päringuid andmebaasis. Praegu seadistame mõned. Hiljem saab vajadusel juurde teha. | |||
Loo või vajadusel muuda kasutaja mailbox'i asukoht | |||
sudo vi /etc/postfix/mysql_mailbox.cf | |||
user=mail | |||
password=mailPASSWORD | |||
dbname=maildb | |||
table=users | |||
select_field=maildir | |||
where_field=id | |||
hosts=127.0.0.1 | |||
additional_conditions = and enabled = 1 | |||
Kust leida emaili alias | |||
sudo vi /etc/postfix/mysql_alias.cf | |||
user=mail | |||
password=mailPASSWORD | |||
dbname=maildb | |||
table=aliases | |||
select_field=destination | |||
where_field=mail | |||
hosts=127.0.0.1 | |||
additional_conditions = and enabled = 1 | |||
Kust leida domeenid | |||
sudo vi /etc/postfix/mysql_domains.cf | |||
user=mail | |||
password=mailPASSWORD | |||
dbname=maildb | |||
table=domains | |||
select_field=domain | |||
where_field=domain | |||
hosts=127.0.0.1 | |||
additional_conditions = and enabled = 1 | |||
Pea meeles, et kui asendad hosts=127.0.0.1 hosti reaalse IP'ga, siis käib suhtlus üle TCP protokolli, mitte üle mysql liidese. Kindlasti kirjuta parooli kohale reaalse parooliga. |
Revision as of 00:39, 25 March 2011
Lembit Elmik AK21
See on väike juhend sellest, kuidas paigaldada mailiserver, mille kasutajaid hoitakse lokaalse masina kasutajate asemel hoopis MySQL andmebaasis. Lisaks mõned enam kasutatavad vidinad, mis ühe tüüpilise mailiserveriga ikka kaasas käivad.
PAIGALDUS
Alustuseks tuleks siis installeerida operatsioonisüsteem. Mina valisin selleks Ubuntu. Tundus lihtne ja pakihaldus pole ka hullu moodi keeruline.
Nüüd tuleks kontrollida, kas vajalikud allikad on lubatud.
sudo vi /etc/apt/source.list
Põhimõtteliselt on vaja main ja universe pakke. Kuid põhimõtteliselt ka multiverse ja restricted peaks olema piisavalt turvalised kasutada.
Enne spetsiifiliste pakkide paigaldamist tuleb kindlasti süsteemi turva- ja muud paigad peale lasta.
sudo aptitude update sudo aptitude safe-upgrade
MySQL - andmebaasimootor
sudo aptitude install mysql-client mysql-server
Postfix - meiliserver
sudo aptitude install postfix postfix-mysql
SASL - paroolide turvaliseks ülekandeks.
sudo aptitude install libsasl2-modules libsasl2-modules-sql libgsasl7 libauthen-sasl-cyrus-perl sasl2-bin libpam-mysql
ClamAV - Viiruse tõrje UNIX tüüpi süsteemidele
sudo aptitude install clamav-base libclamav6 clamav-daemon clamav-freshclam
Amavis, SpamAssassin, postgrey - rämpsposti kontroll
sudo aptitude install amavisd-new sudo aptitude install spamassassin spamc sudo aptitude install postgrey
SquirrelMail - webmail
sudo aptitude install squirrelmail squirrelmail-locales php-pear php5-cli
phpMyAdmin - veebikonsool MySQL haldamiseks
sudo aptitude install phpmyadmin
Vali Yes, et seadistada. Sisesta root mysql password, sisesta phpmyadmin kasutaja password kaks korda. Nõustu, et veebiserverina kasutatakse apache2 veebiserverit.
Courier - IMAP kasutamiseks
sudo aptitude install courier-base courier-authdaemon courier-authlib-mysql courier-imap courier-imap-ssl courier-ssl
Küsitakse web-kaustu. Võid vastata No. Samuti hoiatatakse sertifikaadi asukohast. Ära tee välja.
Nüüd on vajalikud pakid paigaldatud.
Seadistamine
Alustuseks tuleks kontrollida, millised tegevused on tulemüüri poolt üldse lubatud. Tulemüüri tarkvarasid on ka mitmeid ning seetõttu tuleks vajalik seadistamine teha vastavalt sellele, millist müüri kasutatakse. Põhimõtted on ikkagi samad - vajalikud pordid peavad olema väljast sisse liikluseks avatud - SMTP, HTTP, IMAP, SSH
Postfix
Pane oma serveri nimi kirja. Näiteks mail.minudomeen.ee kus minudomeen asenda oma domeeninimega.
sudo vi /etc/mailname
Nüüd ava peamine postfixi konfiguratsiooni fail.
sudo vi /etc/postfix/main.cf
Alustuseks määra ära oma serveri nimi
# This is already done in /etc/mailname #myhostname= mail.example.com
Järgmisena määra ära domeen, millelt saadetakse kirju. See võib olla terve serveri nimi või lihtsalt domeeninimi.domain name.
# myorigin=/etc/mailname myorigin=example.com
Nüüd otsusta, mida kirjutada tervituse bannerisse. Ei midagi sellist, mis potensiaalsele häkkerile abiks oleks...
smtpd_banner = $myhostname ESMTP $mail_name
Nüüd otsusta, kuidas kirjade saatmine toimub. Selleks on põhiliselt kaks võimalust. Saadad ise või läbi oma teenusepakkuja SMTP serveri. See sõltub ka sellest, mida sinu teenusepakkuja võimaldab. Ise saatmise võimalikud tagasilöögid on, et teenusepakkuja ei luba sul omal SMTP teenust jooksutada (pordid kinni), paljud meiliserverid ei võta dünaamilise DNS kirjega serveritelt kirju vastu ja sul on suurem võimalus enda paljastamiseks ründajatele. Ehk siis rohkem tööd oma serveriga. Samas on sul võimalik kirjade saatmist paremini manageerida.
# leave blank to do it yourself relayhost =
# or put it an accessible smtp server relayhost = smtp.yourisp.com
Järgnusena võrgu seadistamine. Võta vastu ühendusi igalt poolt ja usalda vaid seda masinat.
inet_interfaces = all mynetworks_style = host
Sa võid maskeerida väljuvaid aadresseid. Näiteks sinu masina nimi on mail.domain.com aga sa ei taha, et väljuvale kiri saadetakse aadressilt username@mail.domain.com, vaid sa eelistad username@domain.com.
# masquerade_domains = mail.example.com www.example.com !sub.dyndomain.com # masquerade_exceptions = root
Kuna kasutame virtuaalseid domeene peavad need olema tühjad.
local_recipient_maps = mydestination =
Nüüd mõned numbrid.
# kui pikalt oodata enne saatja teavitamist ebaõnnestunud saatmisest delay_warning_time = 4h # on see ajutine või lõplik viga unknown_local_recipient_reject_code = 450 # kui kaua hoida kirja järjekorras enne vea andmist maximal_queue_lifetime = 7d # max ja min aeg sekundites enne kordussaatmist kui ühendus katkeb minimal_backoff_time = 1000s maximal_backoff_time = 8000s # kui kaua oodata serveriga ühenduse loomist smtp_helo_timeout = 60s # kui palju adressaate võib olla ühel kirjal - aitab masspostituse vastu smtpd_recipient_limit = 16 # vigade arv taandumiseks smtpd_soft_error_limit = 3 # vigade arv blokeerimiseks smtpd_hard_error_limit = 12
Nüüd mõned piirangud. Iga seadistus on tegelikult ainult ühel real.
# HELO sõnumi piirangud smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit # Saatja detailide piirangud smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit # Piirangud ühenduvale serverile smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org # Saaja aadressi piirangud smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, permit smtpd_data_restrictions = reject_unauth_pipelining
# Nõua korrektset HELO sõnumit smtpd_helo_required = yes # Kuluta spämmerite aega enne tagasilükkamist smtpd_delay_reject = yes disable_vrfy_command = yes
Virtuaalse domeeni seadistused.
alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases # kus asuvad virtuaalse postkasti kaustad virtual_mailbox_base = /var/spool/mail/virtual # iga postkasti asukoht igale kasutajale virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf # aliastele virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf # domain lookups virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf # transport_maps = mysql:/etc/postfix/mysql_transport.cf
Võid otsida üles kirja failide omaniku ja siis vaadata tema uid ja gid väärtused. Mina tegin selleks eraldi kasutaja (virtual) ja lisasin sellise rea:
virtual_uid_maps = static:5000 virtual_gid_maps = static:5000
Vaja on seadistada ka aliase fail. Seda kasutatakse vaid lokaalselt.
sudo cp /etc/aliases /etc/postfix/aliases sudo postalias /etc/postfix/aliases
Näitena minu /etc/aliases faili sisu:
# See man 5 aliases for format postmaster: root clamav: root
Nüüd tuleb luua kaust, kuhu virtuaalne post pannakse See võib olla ka juba apt-get poolt tehtud. Kindlasti loo ka kasutaja, kes oleks nende kaustade omanik.
sudo mkdir /var/spool/mail/virtual sudo groupadd --system virtual -g 5000 sudo useradd --system virtual -u 5000 -g 5000 sudo chown -R virtual:virtual /var/spool/mail/virtual
Postfix'i MySQL seadistus
Meil on vaja failid, et teha päringuid andmebaasis. Praegu seadistame mõned. Hiljem saab vajadusel juurde teha.
Loo või vajadusel muuda kasutaja mailbox'i asukoht
sudo vi /etc/postfix/mysql_mailbox.cf
user=mail password=mailPASSWORD dbname=maildb table=users select_field=maildir where_field=id hosts=127.0.0.1 additional_conditions = and enabled = 1
Kust leida emaili alias
sudo vi /etc/postfix/mysql_alias.cf
user=mail password=mailPASSWORD dbname=maildb table=aliases select_field=destination where_field=mail hosts=127.0.0.1 additional_conditions = and enabled = 1
Kust leida domeenid
sudo vi /etc/postfix/mysql_domains.cf
user=mail password=mailPASSWORD dbname=maildb table=domains select_field=domain where_field=domain hosts=127.0.0.1 additional_conditions = and enabled = 1
Pea meeles, et kui asendad hosts=127.0.0.1 hosti reaalse IP'ga, siis käib suhtlus üle TCP protokolli, mitte üle mysql liidese. Kindlasti kirjuta parooli kohale reaalse parooliga.