CentOs: Postfix Mail Server cz. I

Autor: Arkadiusz Tobiasz 17 października 2011

W tym wpisie postaram się Wam przedstawić w jaki sposób, krok po kroku można postawić własny serwer mailowy na swoim VPSie. Cały tutorial zostanie podzielony na kilka części, które sukcesywnie będą się pojawiać na tym blogu.

Po pierwsze postawienie serwera mailowego nie jest rzeczą łatwą. Należy zainstalować rzeczy, które trzeba odpowiednio skonfigurować, dlatego postępuj po kolei bardzo uważnie i nie pomijaj żadnego kroku.

Na wstępie zaprezentuje ustawienia mojego serwera, którymi będę posługiwał się we wszystkich częściach tego tutoriala.

hostname : example.centos.local
IP address: 192.168.0.2
Netmask: 255.255.255.0
Gateway: 192.168.0.1

Ponadto moim celem będzie założenie dwóch skrzynek mailowych, w dwóch różnych domenach, a mianowicie:

domena: abc.local
user: alex@abc.local

domena: xyz.local
user: yasmin@xyz.local

Do dzieła zatem. Na wstępie zainstalujemy potrzebne nam programy:

1
yum -y install system-switch-mail, dovecot, squirrelmail, mysql-server, php-imap

Teraz zrobimy kopię Sendmail’a, który jest domyślnie instalowany. Utworzę w tym celu folder backup i przeniosę do niego pliki konfiguracyjne Sendmaila:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir /backup

touch /backup/sendmail.config.location.txt

which sendmail mailq newaliases > /backup/sendmail.config.location.txt

which sendmail mailq newaliases
/usr/sbin/sendmail
/usr/bin/mailq
/usr/bin/newaliases

cp -var /usr/sbin/sendmail /backup
cp -var /usr/bin/mailq /backup
cp -var /usr/bin/newaliases /backup

Ponieważ będziemy chcieli, aby nasz Postfix przechowywał w bazie MySQL konta naszych użytkowników, to musimy zainstalować odpowiednią jego wersję. Domyślne repozytorium nie instaluje paczki z Postfix’em wspierającym obsługę MySQL, dlatego musimy dokonać kilku zmian. Naszego Postfix’a będziemy musieli zainstalować z repozytorium CentOsPlus, ale zanim to zrobimy musimy zablokować instalację Postfix’a z domyślnego repozytorium. W tym celu edytujemy plik:

1
vi /etc/yum.repos.d/CentOS-Base.repo

gdzie dodajemy exclude=postfix-*

Plik powinien wyglądać tak:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5[base]
includepkgs=postfix-*

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix-*

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix-*

Domyślnie zainstalowana paczka jak już pisałem nie zawiera możliwości tworzenia virtualnych hostów, więc jeśli zainstalować wcześniej Postfix’a, to musisz go odinstalować:

1
yum remove postfix-*

Czas na instalację Postfix’a z repozytorium CentOsPlus:

1
yum install -y --enablerepo=centosplus postfix

Sprawdzamy czy został on poprawnie zainstalowany:

1
rpm -qa postfix

Co powinno dać efekt:

1
postfix-2.3.3-2.1.centos.mysql_pgsql

Widzimy, że nasz Postfix wspiera MySQL, jeżeli chcemy uzyskać bardziej szczegółowe informacje wpisujemy:

1
rpm -qi postfix

Zanim przejdziemy do konfiguracji Postfix’a upewnijmy się czy na pewno wspiera on MySQL:

1
postconf -m

Na liście jaka się pojawi powinna się znaleźć w jednym z wierszy fraza mysql.

Następnie instalujemy jeszcze kilka potrzebnych rzeczy:

1
yum -y install  php-mysql php-imap, php-ldap,  php-mbstring

Tak jak pisałem CentOs domyślnie korzysta z Sendmail’a do obsługi poczty, więc zanim przejdziemy do konfiguracji Postfix’a musimy zmienić obsługę maili na nasz nowy program:

1
system-switch-mail

Naszym oczom ukaże się konsola i musimy przełączyć obsługę maili na Postfix’a. Upewnijmy się jeszcze czy zmiana się powiodła:

1
alternatives --display mta

Powinniśmy zobaczyć:

1
2
mta - status is manual.
link currently points to /usr/sbin/sendmail.postfix

Sprawdźmy jeszcze, czy pozostałe linkowania są poprawne i kierują do Postfix’a:

1
ls -l  /etc/alternatives/mta-*

Co powinno pokazać:

1
2
3
4
5
6
7
8
9
lrwxrwxrwx 1 root root 40 Mar 13 14:08 /etc/alternatives/mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
lrwxrwxrwx 1 root root 22 Mar 13 14:08 /etc/alternatives/mta-mailq -> /usr/bin/mailq.postfix
lrwxrwxrwx 1 root root 38 Mar 13 14:08 /etc/alternatives/mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz
lrwxrwxrwx 1 root root 27 Mar 13 14:08 /etc/alternatives/mta-newaliases -> /usr/bin/newaliases.postfix
lrwxrwxrwx 1 root root 43 Mar 13 14:08 /etc/alternatives/mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz
lrwxrwxrwx 1 root root 23 Mar 13 14:08 /etc/alternatives/mta-pam -> /etc/pam.d/smtp.postfix
lrwxrwxrwx 1 root root 22 Mar 13 14:08 /etc/alternatives/mta-rmail -> /usr/bin/rmail.postfix
lrwxrwxrwx 1 root root 25 Mar 13 14:08 /etc/alternatives/mta-sendmail -> /usr/lib/sendmail.postfix
lrwxrwxrwx 1 root root 41 Mar 13 14:08 /etc/alternatives/mta-sendmailman -> /usr/share/man/man1/sendmail.postfix.1.gz

Mimo, że Sendmail i Posfix są kompatybilne, to lepiej na wszelki wypadek usunąć Sendmail’a:

1
yum -y remove sendmail

W kolejnym wpisie pokażę m.in. w jaki sposób skonfigurować Postfix’a.

Jeden komentarz

  1. […] którego celem jest postawienie na CentOs’ie serwera poczty opartego na Postfix’ie. W poprzednim wpisie zainstalowaliśmy wszystkie potrzebne rzeczy, czas na ich konfigurację. Na wstępie musimy […]

Odpowiedz

 

Arkadiusz Tobiasz student Akademii Ekonomicznej im. Karola Adamieckiego w Katowicach na specjalnościach informatyka ekonomiczna oraz rachunkowość. Więcej...

jQuery Validation i funkcja remote

Jakiś czas temu zwrócił się do mnie użytkownik z problemem. Chodzi o to, że korzysta on z pluginu walidacji jQuery, […]

Zend Framework: integracja z Uploadify

W tym wpisie postaram się przedstawić Wam w jaki sposób zintegrować skrypt Uploadify z Zend Frameworkiem. Dzięki temu będziemy mogli […]

Javascript: Czasowe wyświetlanie reklamy

Czasami chcemy, aby na pewnym elemencie naszej strony wyświetlała się reklama przez jakiś czas, a następnie zniknęła. W tym wpisie […]

Linux: backup wszystkich baz danych MySQL

Swego czasu pisałem o tym jak z poziomu konsoli można szybko i przyjemnie zrobić backup bazy MySQL. Wszystko jest ładnie […]