CentOs: Postfix Mail Server cz. VI

Autor: Arkadiusz Tobiasz 1 grudnia 2011

Wszystko już mamy, aby nasza poczta działała, w poprzedniej części dowiedziałeś się jak dodawać domeny oraz użytkowników, czyli tworzyć skrzynki pocztowe. Jednak dobrze jeszcze zweryfikować swoje ustawienia, aby mieć pewność, że nasze maile są wysyłane na zewnątrz oraz przyjmowane z zewnątrz.

Na wstępie upewnijmy się, że nasz PostfixAdmin oby na pewno stworzył wirtualne domeny w naszej bazie danych MySQL. Podane poniżej domeny abc.local i xyz.local musisz zamienić na swoje. Po wykonaniu poniższych komend powinieneś na ekranie zobaczyć jako odpowiedź nazwy swojej domeny.

1
2
postmap -q xyz.local mysql:/etc/postfix/mysql-domains.cf
xyz.local
1
2
postmap -q abc.local mysql:/etc/postfix/mysql-domains.cf
abc.local

Sprawdźmy czy na serwerze zostały utworzone odpowiednie foldery dla naszych domen:

1
2
3
4
cd /home/vmail/
ls -l

abc.local xyz.local

Jak widzisz wylistowało mi dwa foldery abc.local i xyz.local, a więc wszystko jest dobrze.

Możemy jeszcze dla świętego spokoju sprawdzić, czy oby na pewno w bazie danych w tabeli „domains” są dwa wpisy dla naszych domen. W tym celu logujemy się do MySQL’a używając loginu i hasła naszego usera poczty.

1
mysql -u mail -p postfix

i wykonujemy odpowiednie zapytanie na tabeli:

1
mysql> select * from domain;

Jeżeli zapytanie zwróci pusty wynik, to:

  • upewnij się, że podałeś właściwy login i hasło do bazy danych,
  • upewnij się, że podałeś właściwe id dla użytkownika vmail (o tym jak sprawdzić id i gid dowiesz się tutaj),
  • wróć do części II i IV tutoriala i upewnij się, że wykonałeś wszystkie kroki tam opisane.

Sprawdźmy czy na naszym serwerze zostały utworzone odpowiednie foldery naszych użytkowników:

1
2
3
4
cd /home/vmail/abc.local
ls

alex

Na ekranie pojawił się folder „alex” dokładnie tak samo się nazywa jak nasz użytkownik. Sprawdźmy zatem zawartość tego folderu i to, czy znajduje się tam powitalny email wysłany przez PostfixAdmin’a podczas tworzenia skrzynki pocztowej:

1
2
3
4
cd alex/Maildir/new/
ls

1270227274.Vfd00I20014M605812.centos.example.local

Znajduje się tam jeden plik, który jest wiadomością wysłaną przez PostfixAdmin’a (jeśli nie zaznaczyłeś opcji wysłania email’a powitalnego, to folder będzie pusty). Upewnijmy się i sprawdźmy zawartość tego pliku.

1
cat 1270227274.Vfd00I20014M605812.centos.example.local

W odpowiedzi otrzymujemy wiadomość wraz z wszystkimi nagłówkami:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Path: <post@example.local>
X-Original-To: alex@abc.local
Delivered-To: alex@abc.local
Received: from 192.168.139.128 (centos.example.local [127.0.0.1])
by centos.example.local (Postfix) with ESMTP id D41BE4A8096
for <alex@abc.local>; Sat, 3 Apr 2010 00:54:33 +0800 (MYT)
To: alex@abc.local
From: post@example.local
Subject: Welcome
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Message-Id: <20100402165433.D41BE4A8096@centos.example.local>
Date: Sat, 3 Apr 2010 00:54:33 +0800 (MYT)

Hi,

Welcome to your new account.

W ustawieniach PostfixAdmin’a powinniśmy mieć brak szyfrowania hasła do skrzynek. Upewnijmy się czy nie są szyfrowane w naszej bazie danych:

1
2
3
4
5
6
7
8
9
10
mysql -u mail -p postfix
mysql> SELECT password FROM mailbox WHERE username = 'alex@abc.local';


+----------+
| password |
+----------+
| alex     |
+----------+
1 row in set (0.00 sec)

Jak widzisz hasło nie jest szyfrowane. Dzięki temu protokół POP3 będzie mógł je zweryfikować (jeśli wynikiem jest hash, to sprawdź jeszcze raz plik konfiguracyjny PostfixAdmina, wszystkie zmiany zostały opisane tutaj).

Czas teraz sprawdzić komunikację między naszymi dwoma skrzynkami. Wyślemy wiadomość od użytkownika alex@abc.local do użytkownika yasmin@xyz.local:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
telnet centos.example.local 25

220 centos.example.local ESMTP Postfix
helo server
250 centos.example.local
mail from:<alex@abc.local>
250 2.1.0 Ok
rcpt to:<yasmin@xyz.local>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
this is a mail from alex. How are you?
.
250 2.0.0 Ok: queued as 9602D4A80A2
quit
221 2.0.0 Bye

Jeżeli połączenie z SMTP się nie udało sprawdź ustawienia Postfix’a w pliku /etc/postfix/main.cf (zostało to opisane dokładnie tutaj).

Spróbujemy teraz sprawdzić czy wiadomość trafiła do yasmin@xyz.local i ją odczytać. W tym celu łączymy się za pomocą usługi telnet z POP3:

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
27
28
29
telnet centos.example.local 110

+OK Dovecot ready.
user yasmin@xyz.local    <- username must @ domain name
+OK
pass yasmin   <- user password
+OK Logged in.
list
+OK 2 messages:
1 599
2 474
.
retr 2
+OK 474 octets
Return-Path: <alex@abc.local>
X-Original-To: yasmin@xyz.local
Delivered-To: yasmin@xyz.local
Received: from server (unknown [192.168.139.1])
by centos.example.local (Postfix) with SMTP id 9602D4A80A2
for <yasmin@xyz.local>; Sat, 3 Apr 2010 06:10:26 +0800 (MYT)
Message-Id: <20100402221039.9602D4A80A2@centos.example.local>
Date: Sat, 3 Apr 2010 06:10:26 +0800 (MYT)
From: alex@abc.local
To: undisclosed-recipients:;

this is a mail from alex. How are you?
.
quit
+OK Logging out.

Jeżeli masz problem z połączeniem upewnij się, że hasło nie jest szyfrowane. Pisałem o tym już wcześniej.

Sprawdzamy jeszcze logi wysyłania i odbierania poczty:

1
2
3
4
5
6
7
8
tail /var/log/maillog

Apr 3 06:10:39 centos postfix/smtpd[21575]: 9602D4A80A2: client=unknown[192.168.139.1]
Apr 3 06:10:58 centos postfix/cleanup[21579]: 9602D4A80A2: message-id=<20100402221039.9602D4A80A2@centos.example.local>
Apr 3 06:10:58 centos postfix/qmgr[21313]: 9602D4A80A2: from=<alex@abc.local>, size=378, nrcpt=1 (queue active)
Apr 3 06:10:58 centos postfix/virtual[21590]: 9602D4A80A2: to=<yasmin@xyz.local>, relay=virtual, delay=33, delays=33/0.06/0/0.15, dsn=2.0.0, status=sent (delivered to maildir)
Apr 3 06:10:58 centos postfix/qmgr[21313]: 9602D4A80A2: removed
Apr 3 06:11:32 centos postfix/smtpd[21575]: disconnect from unknown[192.168.139.1]

Możemy również sprawdzić logi Dovecot’a, czy ruch POP3 odbywa się poprawnie:

1
2
3
4
tail /var/log/dovecot.log

dovecot: Apr 03 06:29:10 Info: pop3-login: Login: user=<yasmin@xyz.local>, method=PLAIN, rip=::ffff:192.168.139.1, lip=::ffff:192.168.139.128
dovecot: Apr 03 06:29:21 Info: POP3(yasmin@xyz.local): Disconnected: Logged out top=0/0, retr=1/490, del=0/2, size=1073

Ostatnią rzeczą to sprawdzenie SquirrelMail’a czy działa poprawnie. Logujemy się pod adresem http://twoj-adres-ip/webmail i sprawdzamy czy widzimy nasze maile.

To by było na tyle. Cały tutorial nie powstałby, gdyby nie ten link. Wszystko co opisywałem było przeze mnie sprawdzane osobiście na moim serwerze VPS.

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 […]