POSTFIXADMIN
Je grafické rozhraní napsané v PHP, kterým se nastavují virtuální domény, uživatelé a atd.
instalace
cd /usr/ports/mail/postfixadmin/
make install
Vytvoříme adresář pro dočasné soubory
mkdir /root/temp
cd /root/temp
ee /root/temp/mysqscript.postfix
vlozit nasledujici
#####POZOR
#9 a 12 radek musi souhlasit s virtual_******_maps.cnf
#user = postfix
#password = heslo_postfixe
#####POZOR-upravit localhost a password na radku o 9 nize a o 12nize
#####POZOR-je to tady zformátovaný do úzkýho sloupce,po nakopírování se to přeformátuje tak jak má
konec řádky je vždy ukončen středníkem.
#toto je radek 1 ##################################################################
# mysql -u root [-p] < postfix-db.sql
#
#
# Postfix / MySQL
#
USE mysql;
# Postfix user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('password'));
INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
# Postfix Admin user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfixadmin',password('password'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y','Y');
FLUSH PRIVILEGES;
GRANT USAGE ON postfix.* TO postfix@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
GRANT USAGE ON postfix.* TO postfixadmin@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfixadmin@localhost;
CREATE DATABASE postfix;
USE postfix;
#
# Table structure for table admin
#
CREATE TABLE admin (
username varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Admins';
#
# Table structure for table alias
#
CREATE TABLE alias (
address varchar(255) NOT NULL default '',
goto text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (address),
KEY address (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
#
# Table structure for table domain
#
CREATE TABLE domain (
domain varchar(255) NOT NULL default '',
description varchar(255) NOT NULL default '',
aliases int(10) NOT NULL default '0',
mailboxes int(10) NOT NULL default '0',
maxquota int(10) NOT NULL default '0',
transport varchar(255) default NULL,
backupmx tinyint(1) NOT NULL default '0',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (domain),
KEY domain (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';
#
# Table structure for table domain_admins
#
CREATE TABLE domain_admins (
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';
#
# Table structure for table log
#
CREATE TABLE log (
timestamp datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
action varchar(255) NOT NULL default '',
data varchar(255) NOT NULL default '',
KEY timestamp (timestamp)
) TYPE=MyISAM COMMENT='Postfix Admin - Log';
#
# Table structure for table mailbox
#
CREATE TABLE mailbox (
username varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
name varchar(255) NOT NULL default '',
maildir varchar(255) NOT NULL default '',
quota int(10) NOT NULL default '0',
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';
#
# Table structure for table vacation
#
CREATE TABLE vacation (
email varchar(255) NOT NULL default '',
subject varchar(255) NOT NULL default '',
body text NOT NULL,
cache text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
##########################################################
vložíme do DB příkazem-místo HESLO použijte heslo jaké máte pro roota do DB
mysql -u root -pHESLO < /root/temp/mysqscript.postfix
smažeme nepotřebný soubor
rm /root/temp/mysqscript.postfix
KONTROLA vytvoření DB a přístupu uživatele postfix
mysql -u postfix -pheslo_postfixe
show databases;
+----------+
| Database |
+----------+
| postfix |
| test |
+----------+
use postfix;
show tables;
+-------------------+
| Tables_in_postfix |
+-------------------+
| admin |
| alias |
| domain |
| domain_admins |
| log |
| mailbox |
| vacation |
+-------------------+
7 rows in set (0.00 sec)
SELECT * FROM mailbox;
SELECT * FROM domain;
Zeditujeme configurák postfixadmina
ee /usr/local/www/postfixadmin/config.inc.php
upravime nasledujici
$CONF['database_user'] = 'postfixadmin';#stejne jako na radku 12 ktery se vlozil do mysql
$CONF['database_password'] = 'posta';#stejne jako na radku 9 ktery se vlozil do mysql
$CONF['database_name'] = 'postfix'; #stejne jako na radku 9 ktery se vlozil do mysql
$CONF[’postfix_admin_url’] =
$CONF[’postfix_admin_path’] =
$CONF[’admin_email’] =
$CONF[’quota_multiplier’] =
$CONF[’vacation_domain’] =
$CONF[’footer_link’] =
$CONF[’welcome_text’] =
<?php
//
// Postfix Admin
// by Mischa Peters <mischa at high5 dot net>
// Copyright (c) 2002 - 2005 High5!
// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
//
// File: config.inc.php
//
if (ereg ("config.inc.php", $_SERVER['PHP_SELF']))
{
header ("Location: login.php");
exit;
}
// Postfix Admin Path
// Set the location to your Postfix Admin installation here.
$CONF['postfix_admin_url'] = 'http://dvorec.eu/postfixadmin';
$CONF['postfix_admin_path'] = '/usr/local/www/postfixadmin';
// Language config
// Language files are located in './languages'.
$CONF['default_language'] = 'cs';
// Database Config
// mysql = MySQL 3.23 and 4.0
// mysqli = MySQL 4.1
// pgsql = PostgreSQL
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'HESLO';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
// Site Admin
// Define the Site Admins email address below.
// This will be used to send emails from to create mailboxes.
$CONF['admin_email'] = 'spravce@dvorec.eu';
// Mail Server
// Hostname (FQDN) of your mail server.
// This is used to send email to Postfix in order to create mailboxes.
$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';
// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
// system = whatever you have set as your PHP system default
// cleartext = clear text passwords (ouch!)
$CONF['encrypt'] = 'md5crypt';
// Generate Password
// Generate a random password for a mailbox and display it.
// If you want to automagically generate paswords set this to 'YES'.
$CONF['generate_password'] = 'NO';
// Page Size
// Set the number of entries that you would like to see
// in one page.
$CONF['page_size'] = '10';
// Default Aliases
// The default aliases that need to be created for all domains.
$CONF['default_aliases'] = array (
'abuse' => 'abuse@spravce@change-this-to-your.domain.tld',
'hostmaster' => 'hostmaster@change-this-to-your.domain.tld',
'postmaster' => 'postmaster@change-this-to-your.domain.tld',
'webmaster' => 'webmaster@change-this-to-your.domain.tld'
);
// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Example: /usr/local/virtual/domain.tld/username@domain.tld
$CONF['domain_path'] = 'YES';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Example: /usr/local/virtual/domain.tld/username
$CONF['domain_in_mailbox'] = 'NO';
// Default Domain Values
// Specify your default values below. Quota in MB.
$CONF['aliases'] = '10';
$CONF['mailboxes'] = '100';
$CONF['maxquota'] = '10';
// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'NO';
// You can either use '1024000' or '1048576'
$CONF['quota_multiplier'] = '1024000';
// Transport
// If you want to define additional transport options for a domain set this to 'YES'.
// Read the transport file of the Postfix documentation.
$CONF['transport'] = 'NO';
// Virtual Vacation
// If you want to use virtual vacation for you mailbox users set this to 'YES'.
// NOTE: Make sure that you install the vacation module. http://high5.net/postfixadmin/
$CONF['vacation'] = 'YES';
// This is the autoreply domain that you will need to set in your Postfix
// transport maps to handle virtual vacations. It does not need to be a
// real domain (i.e. you don't need to setup DNS for it).
$CONF['vacation_domain'] = 'autoreply.dvorec.eu';
// Alias Control
// Postfix Admin inserts an alias in the alias table for every mailbox it creates.
// The reason for this is that when you want catch-all and normal mailboxes
// to work you need to have the mailbox replicated in the alias table.
// If you want to take control of these aliases as well set this to 'YES'.
$CONF['alias_control'] = 'NO';
// Special Alias Control
// Set to 'NO' if you don't want your domain admins to change the default aliases.
$CONF['special_alias_control'] = 'YES';
// Logging
// If you don't want logging set this to 'NO';
$CONF['logging'] = 'YES';
// Header
$CONF['show_header_text'] = 'NO';
$CONF['header_text'] = ':: Postfix Admin ::';
// Footer
// Below information will be on all pages.
// If you don't want the footer information to appear set this to 'NO'.
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Navrat na hlavni stranku Dvorec.eu';
$CONF['footer_link'] = 'http://www.dvorec.eu';
// Welcome Message
// This message is send to every newly created mailbox.
// Change the text between EOM.
$CONF['welcome_text'] = <<<EOM
Dobry den,
Vitejte ve vasem postovnim uctu
EOM;
//
// END OF CONFIG FILE
//
?>
upravit chybu ve formátování stránky-nastavit hodnotu z 750 na 1000
ee /usr/local/www/postfixadmin/stylesheet.css
#menu {
width: 1000px;
}
a
#alias_table, #mailbox_table, #overview_table, #log_table, #admin_table {
width: 1000px;
}
nastavení práv
cd /usr/local/www/postfixadmin
chmod 640 *.php *.css
cd /usr/local/www/postfixadmin/admin/
chmod 640 *.php .ht*
cd /usr/local/www/postfixadmin/images/
chmod 640 *.gif *.png
cd /usr/local/www/postfixadmin/languages/
chmod 640 *.lang
cd /usr/local/www/postfixadmin/templates/
chmod 640 *.tpl
cd /usr/local/www/postfixadmin/users/
chmod 640 *.php
VAKACE
je to takové to oznámení,když jedete na dovolenou,že jste mimo.Je to tak inteligentní,že na každý mail to odpoví jen jednou. Takže se NEMŮŽE
stát,že pošlete mail ,příjemce má nastavený vakace,automat vám odpoví,vy mezitím nastavíte taky vakace a ono by to poslalo automaticky mail příjemci,ten by zas automaticky odpověděl
...., Tak to fungovalo dříve.
Vytvoreni uzivatele pro vakace
pw groupadd vacation
pw useradd vacation -c Virtual\ Vacation -d /nonexistent -g vacation -s /sbin/nologin
vytvoreni adresare pro vakace
mkdir /var/spool/vacation
cp /usr/local/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
chown -R vacation:vacation /var/spool/vacation/
chmod -R 700 /var/spool/vacation/
zeditovat
ee /var/spool/vacation/vacation.pl
my $db_pass = #stejne jako na radku 9 ktery se vlozil do mysql
my $logfile =
my $debugfile = “/var/spool/vacation/vacation.debug”;
my $syslog = 1;
upravit master.cf-již je doplněno v sekci Postfix
ee /usr/local/etc/postfix/master.cf
vacation unix - n n - - pipe
flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl
doplnit-upravit main.cf-již je doplněno v sekci Postfix
ee /usr/local/etc/postfix/main.cf
transport_maps = hash:/usr/local/etc/postfix/transport
vacation_destination_recipient_limit = 1
ee /usr/local/etc/postfix/transport
místo dvorec.eu si dejte svoji doménu
autoreply.dvorec.eu vacation:
vytvoreni postmapove DB
postmap /usr/local/etc/postfix/transport
reload postfixe
/usr/local/etc/rc.d/postfix reload
Nastavit cestu pro apache
ee /usr/local/etc/apache22/Includes/postfixadmin.conf
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin">
Options Indexes
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>
NASTAVIT autentizaci
ee /usr/local/www/postfixadmin/admin/.htaccess
AuthUserFile /usr/local/www/postfixadmin/admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Postfix Admin sekce"
AuthType Basic
<limit GET POST>
require valid-user
</limit>
-parametr -c vytvoří soubor při dapřidávání dalších uživatelu nepoužívat-původní by se přepsal
htpasswd -c /usr/local/www/postfixadmin/admin/.htpasswd admin
nastavit heslo
Doporučuji nakopčit soubory .ht* z adresáře admin i do adresáře users. Nezapomente vytvořit hesla pro všechny uživatele,kteří
budou si samy moci měnit heslo,nastavovat vakace a apod.
cp /usr/local/www/postfixadmin/admin/.ht* /usr/local/www/postfixadmin/users/.ht*
vymazat setup.php
mv /usr/local/www/postfixadmin/setup.php /usr/local/www/postfixadmin/setup.php.old
spuštění postfixadmina
http://www.dvorec.eu/postfixadmin/setup.php
Pokud dostaneme následující hlášku ,tak není chyba v závislostech stále opravena
The Postfix program
<"spravce@dvorec.xx"@autoreply.dvorec.xx> (expanded from <spravce@dvorec.xx>):
Command died with status 2: "/var/spool/vacation/vacation.pl". Command
output: Can't locate DBI.pm in @INC (@INC contains:
/usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach
/usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8 .) at
/var/spool/vacation/vacation.pl line 18. BEGIN failed--compilation aborted
at /var/spool/vacation/vacation.pl line 18.
Tímto příkazem si zjistíme co schází
pkg_info -W /var/spool/vacation/vacation.pl
a nainstalujeme to
cd /usr/ports/lang/perl5.8 && nake install
cd /usr/ports/databases/p5-DBI && nake install
cd /usr/ports/databases/p5-DBD-mysql && nake install
Užitečnosti
#pokud se preklikneme ve jmenu ci heslu pri editaci souboru pro vytvareni DB, muzeme vymazat uzivatele z DB a pak je znova natahnout
USE mysql;
delete from user where User='postfix';
delete from db where User='postfix';
delete from user where User='postfixadmin';
delete from db where User='postfixadmin';
FLUSH PRIVILEGES;
#a muzem smazat i kompletni DB
DROP DATABASE postfix;
#pokud mame problem s postfixadminem muzete vkladat data rucne
INSERT INTO domain (domain, description, transport) VALUES ('dvorec.eu', 'moje domena', 'virtual');
INSERT INTO alias (address, goto, domain) VALUES ('spravce@dvorec.eu', 'spravce@dvorec.xx', 'dvorec.eu');
INSERT INTO mailbox (username, password, maildir, quota, domain) VALUES ('spravce@dvorec.xx', 'HESLO', 'dvorec.eu/test/', '2000', 'dvorec.eu');