Emailový server na 4smart s webovou administrací

I pro poměrně zkušeného uživatele Debianu (natož pro BFU) může být nastavení Postfixu nesnadná záležitost. Sám jsem se marně pokoušel nastavit Postfix z příkazové řádky tak, aby fungoval přesně podle mých představ, až jsem to vzdal a nainstaloval program Postfix Admin, což je webová aplikace pro správu emailových schránek a přesměrování emailů na serveru. Po přečtení tohoto článku a následování instrukcí v něm, budete mít Postfix Admin nainstalovaný na svém serveru a správa emailů pro Vaše domény bude mnohem jednoduší.

Pokud ještě nemáte, vytvořte si na 4smart.cz virtuální server s Debianem. Tento návod bude pracovat s nejzákladnější šablonou Debian-6, ale návod by měl být obecný i pro ostatní šablony, kde budou přinejhorším nějaké programy již nainstalované.

Instalace potřebných programů

Nejdříve nainstalujeme programy, které jsou pro konfiguraci nezbytné. Jsou to: Php, Mysql (případně PostgreSql), Postfix a nějaký IMAP/POP3 server (Dovecot, Courier nebo jiný). Než je však začneme instalovat je vhodné aktualizovat nabídku programů i nainstalované programy.

apt-get update && apt-get upgrade

Následně nainstalujeme potřebné programy:

apt-get install postfix postfix-mysql dovecot-common mysql-client mysql-server php5 php5-mysql php5-imap

Instalací programu postfix se automaticky odinstaluje sendmail, který je v šabloně jako výchozí program pro odesílání pošty. Webový server Apache už na serveru je, takže se instalovat nemusí.

Instalace programu Postfix Admin

Program Postfix Admin (http://postfixadmin.sourceforge.net/) je nejdřív potřeba stáhnout. Na serveru jsme v domovském adresáři uživatele root a není proti ničemu, když program stáhneme sem. Stažení programem wget, rozbalení a přesun do složky s programem uděláme následovně:

wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.4/postfixadmin_2.3.4.tar.gz?ts=1327090636 -O postfixadmin_2.3.4.tar.gz
tar xvfz postfixadmin_2.3.4.tar.gz
cd postfixadmin_2.3.4.tar.gz

Teď je potřeba vytvořit databázi v MySQL. Na nově vytvořeném serveru není žádný PhpMyAdmin ani Adminer, takže předvedu, jak se to dá udělat v konzoli. Příkaz

mysql -u root -p

nás přihlásí do databáze. Heslo se zadávalo před chvíli u instalace, takže by mělo být živé paměti. Vhodné jméno pro novou databázi je postfix, ale lze použít jakékoliv. Pro přístup k databázi se vytvoří ještě nový uživatel, který bude mít stejné jméno jako databáze, ale není to podmínkou.

mysql> CREATE DATABASE postfix;
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'HESLO';
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';

Pro ukončení mysql pak \q.

Přístupové údaje k databázi je pak potřeba dát do souboru config.inc.php. Nacházejí se za komentářem # Database Config a pokud se Vaše databáze i uživatel jmenují postfix, tak stačí změnit pouze heslo. Konfigurační soubor však ještě nezavírejte, protože je zde nutno změnit ještě jednu hodnotu a to hned tu první - $CONF['configured'] = false; na $CONF['configured'] = true; - pak teprve lze soubor zavřít.

Další nastavení se týká již přímo postfixu. Ve složce DOCUMENTS jsou anglické návody jak nastavit další programy, aby správně fungovaly s Postfix Adminem. Nás zajímá návod POSTFIX_CONF.txt, kde je popsáno nastavení pro tuto verzi Postfix Admina.

Tam je napsáno, že máme nejprve příkazem postconf -m zkusit, zda nainstalovaný postfix umí pracovat s databází MySQL. Náš postfix to umí, protože jsme to na začátku instalovali. Dále se tam radí, jak upravit konfigurační soubor main.cf. Ten musíme vytvořit v /etc/postfix/

/etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = localhost.localdomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = smaslem.cz, localhost.localdomain, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps =
  proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,
  proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf,
  proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
  proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf,
  proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
# konec souboru main.cf

Proměnné na konci se jménem virtual_* jsou důležité, protože odkazují na soubory s dalším nastavením pro Postfix Admin. Tyto soubory nyní vytvoříme, budou vypadat následovně.

/etc/postfix/mysql_virtual_alias_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

/etc/postfix/mysql_virtual_alias_domain_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

mysql_virtual_domains_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query          = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

mysql_virtual_mailbox_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query           = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

mysql_virtual_alias_domain_mailbox_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

mysql_virtual_mailbox_limit_maps.cf:

user = postfix
password = HESLO
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

To je k nastavení postfixu vše. Zbývá poslední krok a tím je nastavení webového serveru. Apache je již na VPS nainstalován, takže jej stačí jen nastavit.

Program Postfix Admin přesuneme do složky /var/www a smažeme zdrojový archiv.

mv postfixadmin-2.3.4 /var/www/postfixadmin
rm postfixadmin_2.3.4.tar.gz

Nyní už zbývá jen vytvořit konfigurační soubor Apache a jsme téměř hotoví.

/etc/apache2/sites-available/postfix:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/postfixadmin
  ServerName  postfixadmin.domena.com
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/postfixadmin>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>
  ErrorLog ${APACHE_LOG_DIR}/postfixadmin.error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/postfixadmin.access.log combined
</VirtualHost>

Na ten se pak vytvoří symlink a restartuje se webový server Apache.

ln -s /etc/apache2/sites-available/postfix /etc/apache2/sites-enabled/postfix
service apache2 restart

Na adrese http://postfixadmin.domena.com nyní běží Postfix Admin. Jděte však nejprve na adresu http://postfixadmin.domena.com/setup.php, čímž se vytvoří databázové tabulky. Je tam formulář pro heslo, jehož zadáním se vygeneruje hash, který je potřeba přidat do konfiguračního souboru config.inc.php. Je to hned druhá proměnná.

$CONF['setup_password'] = 'VÁŠ HASH';

Na této stránce můžete také přidat Supersprávce. Vytvořte jej a vraťte se na úvodní stránku. Instalace je tímto hotova.

 
emailovy_server_postfix_s_webovou_administraci.txt · Poslední úprava: 2012/01/24 09:23 autor: fanda