Serwer poczty z www w 15 minut (postfix, dovecot, roundcube)
Jeśli cokolwiek nie działa proszę napisać będziemy walczyć aż do skutku, ale powinno działać wszystko. Oczywiście wszystkie uwagi z uzasadnieniem są mile widziane.
U mnie dziaał to na urządzeniu terminalowym (nie mylić z komputerem czy serwerem).
Parametry tego urządzenia to:
[INDENT]Procesor 500MHz
Ram 128MB
Dysk - BRAK
USB -> pendrive 8BG zamiast dysku twardego
System Debian 6[/INDENT]
Jak widać sprzęt to istna rakieta z przed dwóch dekad.
Od czego zacząć? Od instalacji Debiana, gdzieś na forum opis jak to zrobić (oczywiście w trybie tekstowym).
Po zainstalowaniu nasz system jest uzbrojony w system plików exim4, którego usuwamy poleceniem:
Kod: Zaznacz cały
apt-get autoremove --purge exim4
Kod: Zaznacz cały
aptitude -y install postfix postfix-tls sasl2-bin ssh mc unzip
Wydajemy polecenie, które nam pobierze gotową konfigurację:
Kod: Zaznacz cały
wget http://cosinus.waw.pl/postfix/postfix.zip
Za pomocą mc (bo wygodniej) usuwamy wszystko z katalogu /etc/postfix i kopiujemy zawartość naszego pobranego archiwum (mc je otwiera).
Instalujemy kolejny wynalazek, magicznym poleceniem:
Kod: Zaznacz cały
aptitude -y install dovecot-common dovecot-pop3d dovecot-imapd
Kod: Zaznacz cały
wget http://cosinus.waw.pl/postfix/dovecot.zip
Następnie z pomocą mc, czyścimy zawartość katalogu /etc/dovecot i kopiujemy tam zawartość archiwum dovecot.zip.
Teraz musimy podmienić nazwy naszej domeny w pliku /etc/postfix/main.cf
Kod: Zaznacz cały
mcedit /etc/postfix/main.cf
linijka 76
Kod: Zaznacz cały
myhostname = mail.twoja.domena.pl
Kod: Zaznacz cały
mydomain = twoja.domena.pl
Kod: Zaznacz cały
mynetworks = 127.0.0.0/8, 192.168.125.0/24
Kod: Zaznacz cały
smtpd_client_restrictions = permit_mynetworks,permit
Następnie wydajemy polecenia:
Kod: Zaznacz cały
newaliases
/etc/init.d/postfix restart
/etc/init.d/dovecot restart
Konta pocztowe dodajemy, tak jak systemowe, czyli:
Kod: Zaznacz cały
adduser nazwa_użytkownika
Instalujemy kolejne pakiety poleceniem
Kod: Zaznacz cały
apt-get inatall -y apache2 mysql-server php5 phpmyadmin
Kod: Zaznacz cały
apt-get install -y roundcube-mysql roundcube-core roundcube
Edytujemy plik /etc/hosts do poniższej postaci
Kod: Zaznacz cały
mcedit /etc/hosts
Kod: Zaznacz cały
127.0.0.1 localhost
127.0.0.1 mail.domena.pl domena.pl mail
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Kod: Zaznacz cały
mcedit /etc/hostname
Kod: Zaznacz cały
mail
Edytujemy ostatni plik /etc/roundcube/apache.conf:
Kod: Zaznacz cały
mcedit /etc/roundcube/apache.conf
Kod: Zaznacz cały
Alias /poczta/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /poczta /var/lib/roundcube
Wykonujemy restart systemu
Kod: Zaznacz cały
reboot
Po uruchomieniu się systemu nasz panel www dostępny jest pod adresem:
Kod: Zaznacz cały
[URL]http://domena.pl/poczta[/URL]
Jeśli dobrnąłeś aż dotąd to dobry znak, są duże szanse, że wszystko działa.
Proszę o wpisanie opinii i spostrzeżeń, Was to nic nie kosztuje a zachęca do rozwijania tematu i pisania kolejnych poradników
Pozdrawiam
dhapollo
Dodane:
Dodajemy obsługę logowania użytkowników na podstawie bazy danych mysql i dodawanie kont przez www
Dodawanie kont systemowych jest dosyć niewygodne dlatego dodałem sobie obsługę kont przechowywanych w mysql. Potrzebne nam są dodatkowe pakiety apache2, mysql-server, php5 phpmyadmin. Instalujemy wszystko wydając jedno polecenie:
Kod: Zaznacz cały
apt-get install -y apache2 mysql-server php5 phpmyadmin
Po zainstalowaniu pakietów pobieramy gotowy plik z konfiguracją dovecot-sql.zip i podmieniamy calutką zawartość katalogu /etc/dovecot/ na tą co jest spakowana zipem.
Kod: Zaznacz cały
wget http://cosinus.waw.pl/postfix/dovecot-sql.zip
Pozostało nam teraz utworzyć nowego użytkownika bazy danych, również z poziomu phpmyadmina, klikamy zakładkę uprawnienia i zakładamy nowego użytkownika z hasłem jakim chcemy. Następnie znowu klikamy na zakładkę uprawnienia i edytujemy naszego użytkownika przyznając mu prawa do bazy mail (wszystkie). Po zapisaniu zmian ponownie klikamy uprawnienia, a następnie: przeładuj uprawnienia.
Jak się dostać do phpmyadmina?
Kod: Zaznacz cały
http://domena.pl/phpmyadmin
Pozostała do wykonania ostatnia rzecz, czyli podanie danych, z pomocą których ma się logować nasz serwer do poczty w celu pobrania danych. W tym celu edytujemy plik /etc/dovecot/dovecot-sql.conf wydając polecenie:
Kod: Zaznacz cały
mcedit /etc/dovecot/dovecot-sql.conf
Restartujemy program dovecot.
Kod: Zaznacz cały
/etc/init.d/dovecot restart
Dodawanie użytkowników przez www
Ponieważ nasz system pocztowy dalej bazuje na kontach systemowych a jedynie autoryzacja idzie przez mysql musimy troszkę nawydziwiać aby dodawać użytkowników przez www.
Instalujemy paczkę sudo.
Kod: Zaznacz cały
apt-get install -y sudo
W tym celu w konsoli wpisujemy
Kod: Zaznacz cały
visudo
Kod: Zaznacz cały
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
[B]
www-data ALL=(root) NOPASSWD: /usr/sbin/useradd
www-data ALL=(root) NOPASSWD: /etc/init.d/postfix
[/B]
# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d
Pozostało nam wykonanie skryptów, bardo proste do własnej rozbudowy, na podstawie tego wzoru. W celu dodania danych do bazy i sytemu potrzebujemy dwóch plików formularz i skrypt
- Formularz -> nazwijmy go dodaj.php
Kod: Zaznacz cały
<form action="useradd-sql.php" method="post"> login: <input type="text" name="login" /> hasło: <input type="text" name="passwd" /> <input type="submit" value="dodaj" /> </form>
- Skrypt -> nazwijmy go dodaj-sql.php
Kod: Zaznacz cały
<?php // odbieramy dane z formularza $login = $_POST['login']; $passwd = $_POST['passwd']; //dodaje konto systemowe z poziomu php echo exec("sudo useradd -d /home/$login -s /bin/false $login"); //wykonuje restart postfixa exec("sudo /etc/init.d/postfix restart"); //tworzy katalog domowy exec("mkdir /home/$login"); //kopiuje gotowy szablon z folderami do interfejsu www //echo exec("cp -p -r /home/szablon/Maildir /home/poczta/$login"); //zmieniamy parawa exec("sudo chmod 777 -R /home/poczta/$login"); if($login and $passwd) { // łączymy się z bazą danych uzupełniamy swój login i hasło $connection = @mysql_connect('localhost', 'LOGIN-DO-BAZY', 'HASŁO DO BAZY') or die('Brak połączenia z serwerem MySQL'); $db = @mysql_select_db('mail', $connection) or die('Nie mogę połączyć się z bazą danych'); // dodajemy rekord do bazy $ins = @mysql_query("INSERT INTO users SET username='$login', password='$passwd', domain='domena.pl'"); if($ins) echo " Rekord został dodany poprawnie"; else echo " Błąd nie udało się dodać nowego rekordu"; mysql_close($connection); } ?>
Pliki dodajemy do katalogu /var/www, jest to podstawowy katalog do obsługi www.
Wystarczy uruchomić stronę:i dodać nowego użytkownikaKod: Zaznacz cały
[URL]http://domena.pl/dodaj.php[/URL]