Nowy, goły serwer VPS wymaga zainstalowania wielu niezbędnych programów, aby mógł spełniać swoje zadania. Na początek trzeba się określić co będzie potrzebne i zdecydować się jakie rozwiązania wybrać.
Mój serwer należy do klasy low-cost (1 procesor 2GH, 1GB RAM, 1 IP). Założenie jest takie, żeby w miarę sprawnie wszystko działało i nie przekraczać dostępnych zasobów. Przede wszystkim serwer ma móc kompleksowo serwować strony www wykorzystując PHP i bazę danych MySQL, obsługiwać pocztę, świadczyć FTP itp. oraz względnie chronić się przed prostymi atakami.
Składniki:
- LAMP (Linux, Apache, MySQL, PHP)
- Serwer FTP
- Serwer pocztowy (Postfix + Dovecot)
- Panel do zarządzania ISPConfig3
Na początek zaczynam od dopisania repozytoriów dla Debiana z dotdeb.org w pliku /etc/apt/sources.list. Na końcu dopisuje takie źródła:
deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all
Aby móc używać powyższych źródeł trzeba je zweryfikować pobierając i instalując klucz GPG
wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | sudo apt-key add -
Dalej przystępuję do aktualizacji informacji o repozytoriach (1 linia), a następnie do aktualizacji nowszych wersji programów mojego systemu (2 linia):
sudo apt-get update sudo apt-get upgrade
Ponadto zakładam, że nazwa hosta została już wcześniej odpowiednio skonfigurowana. Ostatnio pisałem jak to dokonać w części zmiana nazwy hosta. Oczywiście konfiguracji binda tutaj nie przeprowadzam, ze względu na to, żeby zaoszczędzić zasoby serwera i dlatego, że to nie ma sensu przy pojedynczym serwerze z jednym IP. Należy skorzystać z serwera nazw od dostawcy albo z jakichś darmowych.
Należy zmienić domyślną powłokę shell na /bin/bash:
dpkg-reconfigure dash
Na pytanie Use dash as the default system shell (/bin/sh)? odpowiedź No
Instalacja sudo w razie jakby nie było:
apt-get install sudo
Niezbędny będzie jakiś edytor tekstowy, najpopularniejszy VIM lub NANO
sudo apt-get install vim-nox # lub sudo apt-get install nano
Dnsutils – zbiór programów związanych z DNS (nslookup, dig, nsupdate)
sudo apt-get dnsutils
rkhunter, binutils
sudo apt-get install rkhunter binutils
- rkhunter – program do ochrony systemu przed różnymi rootkitami i takimi różnymi niebezpieczeństwami
- binutils – do tworzenia plików wykonywalnych
MySQL, phpMyAdmin
sudo apt-get install mysql-client mysql-server phpmyadmin
W trakcje instalacji kreator poprosi o wprowadzenie hasła dla użytkownika root.
Plik konfiguracyjny znajduje się tutaj: /etc/mysql/my.cnf
Domyślnie serwer MySQL nasłuchuje na localhoscie. Jeśli miałby nasłuchiwać zapytań z innego adresu należy zakomentować poniższy parametr albo wpisać adres IP, z którego ma nasłuchiwać.
... bind-address = 127.0.0.1 ...
Od razu również dla celów testowych włączam logowanie powolnych zapytań, odkomentowując poniższe linie:
... # Here you can see queries with especially long duration slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 5 ...
Po tych zmianach należy zrestartować serwer MySQL
/etc/init.d/mysql restart
Serwer WEB: Apache2, PHP5, FCGI, suExec, Pear, mcrypt, imagemagic, openssl
sudo apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork \ apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd \ php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid \ apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick \ php5-curl libapache2-mod-suphp libruby libapache2-mod-ruby libsasl2-2 \ libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl
Na pojawiające się pytania odpowiadam następująco:
Dostęp do phpmyadmin jest już dostępny przez przeglądarkę pod adresem xx.xx.xx.xx/phpmyadmin.
Należy jeszcze uruchomić dodatkowe moduły apache2
sudo a2enmod rewrite ssl actions include suexec dav_fs dav auth_digest
i restart Apache2:
sudo /etc/init.d/apache2 restart
Postfix, Dovecot, Amavisd-new, SpamAssassin i Clamav
sudo apt-get install postfix postfix-mysql postfix-doc dovecot-pop3d dovecot-imapd \ amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop \ cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon \ libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
Postfix to MTA (Mail Transfer Agent) przekazuje i dostarcza pocztę.
Dovecot to serwer IMAP i POP3
Amavisd-new to pośrednik między MTA a dodatkowymi programami typu antyspam (SpamAssasin) czy antywisrus (Clamav)
FTP: PureFTPD i Quota
sudo apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
Edytuje /etc/default/pure-ftpd-common
zmieniam parametry:
STANDALONE_OR_INETD=standalone VIRTUALCHROOT=true
Aby mieć możliwość łączenia się szyfrowanym protokołem FTPS (TLS) należy wykonać:
echo 1 > /etc/pure-ftpd/conf/TLS
a następnie należy utworzyć certyfikat i zmienić prawa dostępu do niego:
mkdir -p /etc/ssl/private/ openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem chmod 600 /etc/ssl/private/pure-ftpd.pem
i restart: /etc/init.d/pure-ftpd-mysql restart
Vlogger, Webalizer
sudo apt-get install vlogger webalizer geoip-database
Vlogger służy do rotowania logów.
Webalizer analizuje logi i generuje szczegółowe statystki
Squirrelmail – klient pocztowy
sudo apt-get install squirrelmail
Należy utworzyć dowiązanie symboliczne:
ln -s /usr/share/squirrelmail/ /var/www/webmail
Konfiguracja Squirrelmail:
squirrelmail-configure
Uruchomiony zostanie taki konfigurator:
SquirrelMail Configuration : Read: config.php (1.4.0) --------------------------------------------------------- Main Menu -- 1. Organization Preferences 2. Server Settings 3. Folder Defaults 4. General Options 5. Themes 6. Address Books 7. Message of the Day (MOTD) 8. Plugins 9. Database 10. Languages D. Set pre-defined settings for specific IMAP servers C Turn color off S Save data Q Quit Command >>
Należy wybrać opcję D i w następnym oknie wpisać dovecot
--------------------------------------------------------- While we have been building SquirrelMail, we have discovered some preferences that work better with some servers that don't work so well with others. If you select your IMAP server, this option will set some pre-defined settings for that server. Please note that you will still need to go through and make sure everything is correct. This does not change everything. There are only a few settings that this will change. Please select your IMAP server: bincimap = Binc IMAP server courier = Courier IMAP server cyrus = Cyrus IMAP server dovecot = Dovecot Secure IMAP server exchange = Microsoft Exchange IMAP server hmailserver = hMailServer macosx = Mac OS X Mailserver mercury32 = Mercury/32 uw = University of Washington's IMAP server gmail = IMAP access to Google mail (Gmail) accounts quit = Do not change anything Command >>
Następnie należy opuścić konfigurator wcześniej zapisując zmiany S
Panel SquirrelMail dostępny będzie pod adresem:
http://XX.XX.XX.XX/webmail lub http://moja-domena.pl/webmail
Instalacja panelu ISPConfig
cd /tmp wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz tar xfz ISPConfig-3-stable.tar.gz cd ispconfig3_install/install/ php -q install.php
Uruchomi się instalator. Jeśli zada jakieś trudne pytanie należy wybrać domyślną opcję i potwierdzić komendą „enter” 😉
Po zainstalowaniu panel dostępny jest pod adresem:
https://XX.XX.XX.XX:8080 lub https://moja-domena.pl:8080
Login: admin
Hasło: admin
(Należy zmienić jak najszybciej po zalogowaniu)
Od razu najlepiej też zmienić port logowania z 8080 na jakiś inny niestandardowy.
W tym celu należy edytować plik: /etc/apache2/sites-available/ispconfig.vhost
... Listen 58880 NameVirtualHost *:58880 <VirtualHost _default_:58880> ServerAdmin webmaster@localhost ...
i zrestartować apache
sudo /etc/init.d/apache2 restart
Konfiguracja Dovecot
Należy sprawdzić plik /etc/dovecot/dovecot.conf i w razie potrzeby zmodyfikować
... protocols = imap imaps pop3 pop3s ... auth default { ... mechanisms = plain login ... # SQL database </usr/share/doc/dovecot-common/wiki/AuthDatabase.SQL.txt> passdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf } ... # SQL database </usr/share/doc/dovecot-common/wiki/AuthDatabase.SQL.txt> userdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf } ... # It's possible to export the authentication interface to other programs: socket listen { master { # Master socket provides access to userdb information. It's typically # used to give Dovecot's local delivery agent access to userdb so it # can find mailbox locations. path = /var/run/dovecot/auth-master mode = 0600 # Default user/group is the one who started dovecot-auth (root) user = vmail #group = } client { # The client socket is generally safe to export to everyone. Typical use # is to export it to your SMTP server so it can do SMTP AUTH lookups # using it. #path = /var/run/dovecot/auth-client path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } ...
Warto też zwrócić uwagę, żeby reszta opcji autoryzacji w części auth default była ujęte w komentarze. Aby zobaczyć wszystkie niestandardowe opcje należy wywołać taką komendę:
dovecot -n # 1.2.15: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-xxx.xxx.xxxstabxxx i686 Debian 6.0.5 log_timestamp: %Y-%m-%d %H:%M:%S protocols: imap imaps pop3 pop3s login_dir: /var/run/dovecot/login login_executable(default): /usr/lib/dovecot/imap-login login_executable(imap): /usr/lib/dovecot/imap-login login_executable(pop3): /usr/lib/dovecot/pop3-login mail_privileged_group: mail mbox_write_locks: fcntl dotlock mail_executable(default): /usr/lib/dovecot/imap mail_executable(imap): /usr/lib/dovecot/imap mail_executable(pop3): /usr/lib/dovecot/pop3 mail_plugin_dir(default): /usr/lib/dovecot/modules/imap mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap mail_plugin_dir(pop3): /usr/lib/dovecot/modules/pop3 lda: postmaster_address: postmaster@moja-domena.pl auth_socket_path: /var/run/dovecot/auth-master log_path: auth default: mechanisms: plain login verbose: yes passdb: driver: sql args: /etc/dovecot/dovecot-sql.conf userdb: driver: sql args: /etc/dovecot/dovecot-sql.conf socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 user: postfix group: postfix master: path: /var/run/dovecot/auth-master mode: 384 user: vmail
Następnie należy jeszcze edytować plik /etc/dovecot/dovecot-sql.conf
... # Database driver: mysql, pgsql, sqlite driver = mysql ... connect = host=localhost dbname=dbispconfig user=dovecot password=dovecotpass ... default_pass_scheme = MD5 ... password_query = SELECT password, email AS user FROM mail_user WHERE email = '%u' AND disable%Ls = 'n' ... user_query = SELECT maildir as home, CONCAT(maildir, '/Maildir') as mail, uid, gid FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
Jeśli chodzi o użytkownika do połączenia za bazą danych dbispconfig to można:
- użyć użytkownika i hasło wykorzystywane przez ISPConfig (w pliku: /usr/local/ispconfig/server/lib/config.inc.php )
- stworzyć nowego użytkownika powielając prawa użytkownika ispconfig
(bardzo proste do wyklikania w phpmyadmin)
Na koniec należy zrestartować dovecot’a
sudo /etc/init.d/dovecot restart
Dovecot powinien domyślnie wszystkie informacje logować do pliku /var/log/mail.log
Na koniec trzeba jeszcze nadać odpowiednie uprawnienia do plików konfiguracyjnych
# Postfix używa uprawnień dla vmail chgrp vmail /etc/dovecot/dovecot.conf chmod g+r /etc/dovecot/dovecot.conf # root ma możliwość dostępu do pliku, żeby nikt inny nie mógł odczytać hasła MySQL chown root:root /etc/dovecot/dovecot-sql.conf chmod go= /etc/dovecot/dovecot-sql.conf
Komunikacja Posfix z Dovecot
Dovecot rozszerza możliwości Postfix’a. Aby skomunikować oba programy należy edytować plik /etc/postfix/master.cf i dopisać taką linię:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Należy również edytować plik /etc/postfix/main.cf i dopisać na końcu:
virtual_transport = dovecot dovecot_destination_recipient_limit = 1
lub zamiast edytować plik wystarczy wpisać:
postconf -e virtual_transport=dovecot postconf -e dovecot_destination_recipient_limit=1
Na koniec wystarczy odświeżyć Postfix
postfix reload
lub nawet go zrestartować
sudo /etc/init.d/postfix restart
Aktualizacja:
Gdyby się jednak okazało, że powyższa konfiguracja pożera zbyt dużo zasobów to zapraszam do zapoznania się z tym o to wpisem: Uproszczenie konfiguracji serwera VPS. Wyłączenie serwera pocztowego.
Pingback: Uproszczenie konfiguracji serwera VPS. Wyłączenie serwera pocztowego.
Dziękuję Ci serdecznie człowieku za twoją pracę. Ślęczałem nad tym od tygodnia… Przewertowałem dziesiątki stron. I dopiero tutaj kawa na ławę została wyłożona. Szacunek
Hmm.
Nie, żebym coś miał do Twoich poradników, są fajne itp itd. Ale: 😉
Mogę stworzyć konto mailowe przez isp config, mogę wysyłać z niego maile na dowolny adres, ale jeżeli wyślę maila z innego konta na ten adres co utworzyłem to „nieznany odbiorca” 😉
Żadnej idei odpowiedzi? ;>
Hmm…
Nie, żebym zignorował Twój komentarz… ale jednak 😉
Jeżeli oczekujesz wyłącznie gotowych rozwiązań to chyba źle trafiłeś.
Natomiast bardzo chętnie pomogę w rozwiązaniu Twojego problemu, jeśli oczywiście udostępnisz konkretne informacje, typu: nagłówek tego maila, logi z mail.log oraz czego używasz do odbierania maili.
Bezpośredni kontakt do mnie nolife@haveyoutried.it.
Pozdrawiam
Witam
Mam problem z programem pocztowym. Dodałem przez panel VestaCP konto pocztowe admin@coopgame.pl, i poczta działa tylko wysyłanie, maile nie dochodzą. Jakiś pomysł ?