Gestione domini virtual con postfixadmin: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
m New page: {{Stub}} Da repository RVM sudo aptitude install postfixadmin sudoedit config $CONF['admin_email'] = 'gabriele.vivinetto@rvmgroup.it'; $CONF['postfix_admin_url'] = 'http://firemar.ma...
 
mNo edit summary
Line 1: Line 1:
{{Stub}}
Il pacchetto .deb di postfixadmin è stato inserito nel repository RVM. Alternativamente scaricarlo ed installarlo a mano


Da repository RVM
*Installarlo da repository RVM:


  sudo aptitude install postfixadmin
  sudo aptitude install postfixadmin


sudoedit config
* Creare il database
postfixadmin
* Creare lo user con tutti i diritti sul db postfixadmin
postfixadmin/postfixpassword


* Modificare i parametri di configurazione:
cd /etc/postfixadmin
sudoedit config
<pre>
$CONF['admin_email'] = 'gabriele.vivinetto@rvmgroup.it';
$CONF['admin_email'] = 'gabriele.vivinetto@rvmgroup.it';
// Il login inziale dell'utente amministrativo


$CONF['postfix_admin_url'] = 'http://firemar.marzotto.priv/postfixadmin';
$CONF['postfix_admin_url'] = 'http://myserver.priv/postfixadmin';
// URL per far funzionare i link interni


$CONF['database_type'] = 'mysqli';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixpass';
$CONF['database_password'] = 'postfixpassword';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_prefix'] = '';
$CONF['database_prefix'] = '';
// Impostazioni DB


$CONF['encrypt'] = 'cleartext';
$CONF['encrypt'] = 'cleartext';
// Per semplificare, storiamo le password in cleartext


$CONF['default_aliases'] = array (
$CONF['default_aliases'] = array (
     'abuse' => 'abuse@marzottospa.com',
     'abuse' => 'abuse@mydomain.com.com',
     'hostmaster' => 'hostmaster@marzottospa.com',
     'hostmaster' => 'hostmaster@mydomain.com',
     'postmaster' => 'postmaster@marzottospa.com',
     'postmaster' => 'postmaster@mydomain.com',
     'webmaster' => 'webmaster@marzottospa.com'
     'webmaster' => 'webmaster@mydomain.com'
);
);
// Questi sono gli alias che vengono creati per TUTTI i domini, se si sceglie di creare quelli default


$CONF['domain_path'] = 'YES';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
// Le caselle verranno create nel folder nomeuser@mydomain.com


$CONF['aliases'] = '0';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['maxquota'] = '0';
// Di default non creare gli alias di default, nessun amailbox di default e non abilitare la quota.
</pre>


* Andare alla pagina di setup, e controllare che tutto sia ok:


http://firemar/postfixadmin/setup.php
http://myserver.priv/postfixadmin/setup.php


$CONF['setup_password'] = 'f74986889643960430367b466d2575e6:537950f5dcb72607483e
* Generare la password di setup, ed inserirla nel file di configurzione


login con email specificata e pass
cd /etc/postfixadmin
crea testuser
 
$CONF['setup_password'] = 'f74986889643960430367b466d2575e6:537950f5dcb72607483e
 
* Fare login con email e passord specificati
 
* Creare il dominio ed uno user di test


==Configurazione postfix==
==Configurazione postfix==


grep postfix /etc/passwd
* Identificare uid e gid dello user postfix (tipicamente 101/101):
grep postfix /etc/group
grep postfix /etc/passwd
 
grep postfix /etc/group
cat | suto t.. /etc/postfix/main.cf


* Impostare i parametri diconfigurazioene per i domini virtuali:


<pre>
cat | sudo tee -a /etc/postfix/main.cf <<EOFile
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:101
virtual_gid_maps = static:101
Line 59: Line 83:
virtual_uid_maps = static:101
virtual_uid_maps = static:101
EOFile
EOFile
</pre>
* Eliminare i domini virtuali dai parametri
mydestination
relay_domains


* Creare i file di configurazioni per le query SQL (cambiare la password)
** Alias map:
<pre>
cat | sudo tee /etc/postfix/mysql_virtual_alias_maps.cf <<EOFile
cat | sudo tee /etc/postfix/mysql_virtual_alias_maps.cf <<EOFile
user = postfixadmin
user     = postfixadmin
password = postfixpass
password = postfixpassword
hosts = 127.0.0.1
hosts   = 127.0.0.1
dbname = postfixadmin
dbname   = postfixadmin
table = alias
query    = SELECT goto FROM alias WHERE address='%s' AND active = '1'
select_field = goto
where_field = address
EOFile
EOFile
</pre>


'''NOTA: /etc/aliases servirà SOLO per gli alias LOCALI cioè le mail inviate a destinatari SENZA DOMINIO'''
** Domini virtuali considerati locali:
<pre>
cat | sudo tee /etc/postfix/mysql_virtual_domains_maps.cf<<EOFile
cat | sudo tee /etc/postfix/mysql_virtual_domains_maps.cf<<EOFile
user = postfixadmin
user     = postfixadmin
password = postfixpass
password = postfixpassword
hosts = 127.0.0.1
hosts   = 127.0.0.1
dbname = postfixadmin
dbname   = postfixadmin
table = domain
#query            = SELECT domain FROM domain WHERE domain='%s'
select_field = domain
#optional query to use when relaying for backup MX
where_field = domain
query            = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
additional_conditions = and backupmx = '0' and active = '1'
EOFile
EOFile
</pre>


** Mailbox virtuali
<pre>
cat | sudo tee /etc/postfix/mysql_virtual_mailbox_maps.cf <<EOFile
cat | sudo tee /etc/postfix/mysql_virtual_mailbox_maps.cf <<EOFile
user = postfixadmin
user     = postfixadmin
password = postfixpass
password = postfixpassword
hosts = 127.0.0.1
hosts   = 127.0.0.1
table = mailbox
table   = mailbox
dbname = postfixadmin
dbname   = postfixadmin
select_field = maildir
query              = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
where_field = username
#query            = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
EOFile
EOFile
</pre>


sudo aptitude install libsasl2-modules-sql libsasl2-modules
* Configurazione autenticazione SASL per postfix


sudoedit /etc/postfix/sasl/smtpd.conf
sudo aptitude install libsasl2-modules-sql libsasl2-modules


sudoedit /etc/postfix/sasl/smtpd.conf
<pre>
pwcheck_method: auxprop
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
mech_list: PLAIN LOGIN
Line 102: Line 144:
sql_hostnames: 127.0.0.1
sql_hostnames: 127.0.0.1
sql_user: postfixadmin
sql_user: postfixadmin
sql_passwd: postfixpass
sql_passwd: postfixpassword
sql_database: postfixadmin
sql_database: postfixadmin
sql_select: select password from mailbox where username ='%u@%r'
sql_select: select password from mailbox where username ='%u@%r'
</pre>


sudo invoke-rc.d saslauthd restart
sudo invoke-rc.d saslauthd restart


* Creazione folders:


<pre>
sudo mkdir -p /home/vmail/marzottospa.com
sudo mkdir -p /home/vmail/marzottospa.com
sudo chmod -R 770 /home/vmail
sudo chmod -R 770 /home/vmail
sudo chown -R postfix:postfix /home/vmail/
sudo chown -R postfix:postfix /home/vmail/
</pre>


* Check config
* Check config
sudo postconf
sudo postconf




sudoedit /etc/dovecot/dovecot-sql.conf
==Configurazione Dovecot==


sudoedit /etc/dovecot/dovecot-sql.conf


connect = dbname=postfixadmin user=postfixadmin host=127.0.0.1 password=postfixpass
<pre>
connect = dbname=postfixadmin user=postfixadmin host=127.0.0.1 password=postfixpassword
default_pass_scheme = PLAIN
default_pass_scheme = PLAIN


Line 141: Line 189:
     WHERE \
     WHERE \
         username = '%u'
         username = '%u'
</pre>


sudoedit /etc/dovecot/dovecot.conf
sudoedit /etc/dovecot/dovecot.conf


<pre>
protocols = imap imaps pop3 pop3s
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
disable_plaintext_auth = no
Line 168: Line 219:
user = root
user = root
}
}
</pre>


sudo invoke-rc.d dovecot restart
sudo invoke-rc.d dovecot restart





Revision as of 12:40, 22 February 2011

Il pacchetto .deb di postfixadmin è stato inserito nel repository RVM. Alternativamente scaricarlo ed installarlo a mano

  • Installarlo da repository RVM:
sudo aptitude install postfixadmin
  • Creare il database
postfixadmin
  • Creare lo user con tutti i diritti sul db postfixadmin
postfixadmin/postfixpassword
  • Modificare i parametri di configurazione:
cd /etc/postfixadmin
sudoedit config
$CONF['admin_email'] = 'gabriele.vivinetto@rvmgroup.it';
// Il login inziale dell'utente amministrativo

$CONF['postfix_admin_url'] = 'http://myserver.priv/postfixadmin';
// URL per far funzionare i link interni

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixpassword';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_prefix'] = '';
// Impostazioni DB

$CONF['encrypt'] = 'cleartext';
// Per semplificare, storiamo le password in cleartext

$CONF['default_aliases'] = array (
    'abuse' => 'abuse@mydomain.com.com',
    'hostmaster' => 'hostmaster@mydomain.com',
    'postmaster' => 'postmaster@mydomain.com',
    'webmaster' => 'webmaster@mydomain.com'
);
// Questi sono gli alias che vengono creati per TUTTI i domini, se si sceglie di creare quelli default

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
// Le caselle verranno create nel folder nomeuser@mydomain.com

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
// Di default non creare gli alias di default, nessun amailbox di default e non abilitare la quota.
  • Andare alla pagina di setup, e controllare che tutto sia ok:

http://myserver.priv/postfixadmin/setup.php

  • Generare la password di setup, ed inserirla nel file di configurzione
cd /etc/postfixadmin
$CONF['setup_password'] = 'f74986889643960430367b466d2575e6:537950f5dcb72607483e
  • Fare login con email e passord specificati
  • Creare il dominio ed uno user di test

Configurazione postfix

  • Identificare uid e gid dello user postfix (tipicamente 101/101):
grep postfix /etc/passwd
grep postfix /etc/group
  • Impostare i parametri diconfigurazioene per i domini virtuali:
cat | sudo tee -a /etc/postfix/main.cf <<EOFile
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:101
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 101
virtual_transport = virtual
virtual_uid_maps = static:101
EOFile
  • Eliminare i domini virtuali dai parametri
mydestination
relay_domains
  • Creare i file di configurazioni per le query SQL (cambiare la password)
    • Alias map:
cat | sudo tee /etc/postfix/mysql_virtual_alias_maps.cf <<EOFile
user     = postfixadmin
password = postfixpassword
hosts    = 127.0.0.1
dbname   = postfixadmin
query    = SELECT goto FROM alias WHERE address='%s' AND active = '1'
EOFile

NOTA: /etc/aliases servirà SOLO per gli alias LOCALI cioè le mail inviate a destinatari SENZA DOMINIO

    • Domini virtuali considerati locali:
cat | sudo tee /etc/postfix/mysql_virtual_domains_maps.cf<<EOFile
user     = postfixadmin
password = postfixpassword
hosts    = 127.0.0.1
dbname   = postfixadmin
#query            = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
query             = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
EOFile
    • Mailbox virtuali
cat | sudo tee /etc/postfix/mysql_virtual_mailbox_maps.cf <<EOFile
user     = postfixadmin
password = postfixpassword
hosts    = 127.0.0.1
table    = mailbox
dbname   = postfixadmin
query              = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#query             = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
EOFile
  • Configurazione autenticazione SASL per postfix
sudo aptitude install libsasl2-modules-sql libsasl2-modules
sudoedit /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
auxprop_plugin: sql
sql_verbose: yes
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: postfixadmin
sql_passwd: postfixpassword
sql_database: postfixadmin
sql_select: select password from mailbox where username ='%u@%r'
sudo invoke-rc.d saslauthd restart
  • Creazione folders:
sudo mkdir -p /home/vmail/marzottospa.com
sudo chmod -R 770 /home/vmail
sudo chown -R postfix:postfix /home/vmail/
  • Check config
sudo postconf


Configurazione Dovecot

sudoedit /etc/dovecot/dovecot-sql.conf
connect = dbname=postfixadmin user=postfixadmin host=127.0.0.1 password=postfixpassword
default_pass_scheme = PLAIN

password_query = \
    SELECT \
        password \
    FROM \
        mailbox
    WHERE \
        username = '%u'

user_query = \
    SELECT \
        CONCAT('/home/vmail/',maildir) AS home, \
    concat('maildir:/home/vmail/', maildir) as mail, \
        101 AS uid, \
        101 AS gid \
    FROM \
        mailbox \
    WHERE \
        username = '%u'


sudoedit /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n
mail_access_groups = mail
first_valid_uid = 101
first_valid_gid = 101
protocol imap {
}

protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}

auth default {
mechanisms = digest-md5 plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = root
}
sudo invoke-rc.d dovecot restart


Riferimenti