rev="post-409" No Comments
Много е удобно да се ползват виртуални потребители за пощенски сървър, а е и много по-сигурно.
В тази конфигурация ще ползвам операционна система CentOS 5.5 и демоните dovecot, postfix, postgresql. Косвено участва и Apache, като уеб сървър за уеб интерфейса postfixadmin.
1. Инсталиране на postgresql server:
#yum -y install postgresql-server
След стартиране на postgresql – продължаваме.
Създаване на потребител и база за postfix:
#su postgres
$psql
postgres=# create user postfix with password 'password';
postgres=# create database postfix owner postfix;
postgres=# \q
$exit
2. Инсталиране на Postfix с поддръжка на база данни.
Ако до сега сте имали инсталиран Postfix, той трябва да бъде деинсталиран:
#yum erase postfix
Редактира се /etc/yum.repos.d/CentOS-Base.repo:
В раздел [base] и [updates] се добавя реда:
exclude=postfix
В раздел [centosplus]:
enabled=1
Проверка дали пакета на Postfix с поддръжката на бази данни се „вижда“:
#yum list postfix
...
...
postfix.x86_64 2:2.3.3-2.1.centos.mysql_pgsql
Това, което ни трябва се вижда на края – „…mysql_pgsql“.
Инсталираме:
#yum -y install postfix
Това, което ни трбява в /etc/postfix/main.cf:
myhostname = mail.mydomain.tld
inet_interfaces = all
transport_maps = pgsql:/etc/postfix/transport.cf
virtual_alias_maps = pgsql:/etc/postfix/virtual.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_minimum_uid = 5000
virtual_minimum_gid = 5000
virtual_mailbox_domains = pgsql:/etc/postfix/transport.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_maps = pgsql:/etc/postfix/mailboxes.cf
virtual_mailbox_limit = 1073741824
Последния ред означава, че имаме лимит от 1GB на пощенска кутия.
/etc/postfix/transport.cf:
hosts = localhost
user = postfix
password = password
dbname = postfix
table = domain
select_field = transport
where_field = domain
/etc/postfix/virtual.cf
hosts = localhost
user = postfix
password = password
dbname = postfix
table = alias
select_field = goto
where_field = address
/etc/postfix/mailboxes.cf
hosts = localhost
user = postfix
password = password
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
След като всички конфигурационни файлове са готови, стартираме демона:
#/etc/init.d/postfix start
3. Инсталиране на dovecot:
#yum -y install dovecot
В /etc/dovecot.conf:
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot-pgsql.conf
}
userdb sql {
args = /etc/dovecot-pgsql.conf
}
socket listen {
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}
first_valid_uid = 5000
first_valid_gid = 5000
/etc/dovecot-pgsql.conf:
driver = pgsql
connect = host=localhost dbname=postfix user=postfix password=password
default_pass_scheme = crypt
password_query = SELECT password FROM mailbox WHERE username='%u' AND active='1'
user_query = SELECT '/home/mail/'||maildir AS home, '/home/mail/'||maildir AS mail, 5000 as uid, 5000 as gid FROM mailbox WHERE username='%u' AND active='1'
Стартиране на dovecot:
#/etc/init.d/dovecot start
Поглеждаме в /var/log/maillog за евентуални грешки. Ако всичко е наред може би дори ще се вижда и поток от спам към несъществуващи пощенски кутии.
4. Postfixadmin
Инсталацията му се свежда до разархивирането на архива в папка достъпна през уеб и редакцията на config.inc.php, като в него единствено трябва да са попълни конфигурацията за достъп до базата данни.
След като създадем потребители чрез postfixadmin, те вече ще могат да получават поща, както и ще имат достъп до пощенските си кутии чрез IMAP/POP3.
5. Изпращане на електронна поща – SMTP
Елементарен начин това да стане е като се опишат мрежите, които е разрешено да релейват през този пощенски сървър в /etc/postfix/main.cf:
mynetworks = 127.0.0.0/8 192.168.0.0/24
Това не е най-сигурният метод, понеже не използва никаква идентификация на ниво потребител.
По-добрият вариант е потребителят да трябва да се идентифицира, за да изпрати успешно писмо.
Добавяме в /etc/postfix/main.cf следните няколко реда:
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Вече можете и да изпращате през този сървър 😉
Добре ще е да сложим и елементарна спам-защита. Необхоримо е да преработим smtpd_recipient_restrictions записа в main.cf, така, че да се получи следното:
smtpd_recipient_restrictions =
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/whitelist,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client 0spam.fusionzero.com,
reject_rbl_client bl.spamcannibal.org,
reject_rbl_client blackholes.five-ten-sg.com,
reject_rbl_client blackholes.intersil.net,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client dnsbl-0.uceprotect.net,
reject_rbl_client dnsbl-1.uceprotect.net,
reject_unauth_destination
Като файлът /etc/postfix/whitelist съдържа хостове изпращащи поща, които не желаете да преминат през спам-филтрите. Обикновено това са пощенски сървъри на мързеливи администратори, които не отговарят на някое или всички изисквания за легитимно изпращане на поща. Ето примерно съдържание на файла:
212.39.90.88 OK
mbox.contact.bg OK
sts-tech.com OK
87.121.24.7 OK
Това е всичко необходимо за напълно работещ сървър с виртуални потребители. За въпроси – ползвайте коментарите. Скоро ще пусна статия как да подсигурим същият този сървър с помощта на SSL.
Последни коментари