User:Babiz/Postfix Admin
Un server Apache con PHP e Postfix Admin
Seguendo i passaggi descritti di seguito sarà più facile per chi non è molto Gentoo-pratico, il nuovo sistema operativo appena installato deve essere riconfigurato, dopo aver incontrato notevoli difficoltà nel seguire i pssaggi nella wiki riferiti all' amministrazione web usando Postfix Admin, mi permetto di annotare una serie di passaggi primari, per avviare Postfix Admin alla prima installazione senza errori. Evitando quindi gli errori di sistema che non vengono menzionati nella it#Impostazioni di Sistema e Pacchetti
--Babiz (talk) 04:50, 4 January 2025 (UTC)
I requisiti di configurazione iniziale utilizzando uno schema di server Apache/PHP e PostGreSQL, funzionante applicando i seguenti passi (Cheat Sheet)
Pre-configurare i pacchetti
Partendo da un sistema fresco, appena installato di Gentoo con profilo default/linux/amd64/23.0 (stable) è necessario configurare Portage nel:
- FILE /etc/portage/make.conf
E nella cartella:
- /etc/portage/package.use
Affinché il processo di emerge raccolga tutte le necessarie configurazioni per rendere il nuovo sistema server coerente con PHP/Apache
e un database, tutto questo per far funzionare la web app 'Postfix Admin' usando un server locale minimale.
- Definire le USE flag globali.
- FILE /etc/portage/make.conf
- USE=" sockets crypt bzip2 imap maildir sasl ssl urandom vhosts postgres apache2 nls acl sendmail "
- FILE /etc/portage/make.conf
Applicare le modifiche tenendo conto che è una guida predefinita.
Questo implica una selezione ragionata sui pacchetti che devono venire installati, ed i file di configurazione, che poi vanno modificati o verificati manualmente.
Configurazione delle USE flag per cartella, creare un file contenente le seguenti righe:
- USE flag pacchetti
- FILE /etc/portage/package.use/Mailserver
- dev-lang/php pdo fpm ldap-sasl ldap soap sqlite
- app-eselect/eselect-php apache2
- www-apps/postfixadmin -mysql
- FILE /etc/portage/package.use/Mailserver
Controlla le USE flag qui sopra, è tutto quello che serve per avere funzionante Apache/PHP e PostgreSQL. Quindi inizia a installare la raccolta di pacchetti sul nuovo server di posta.
- Un controllo di configurazione.
root #
emerge --ask --pretend --verbose php
- Mostrerà un risultato simile a questo
dev-lang/php USE="acl apache2 bzip2 cli ctype fileinfo filter flatfile fpm gdbm iconv imap jit ldap ldap-sasl nls opcache pdo phar posix poostgres readline session simplexml soap sockets ssl sqlite tokenizer unicode xml zlib ...
Le USE flag pdo sqlite devono essere abilitate per evitare un errore nel funzionamento di Postfix Admin.
Emergere tutto il software
Per installare il sistema mail server di base con apache php postgresql postfix dovecot viene riportato l'elenco dei pacchetti:
- Portage world set.
- CARICARE QUESTO ELENCO NEL SET @WORLD:
- CARICARE QUESTO ELENCO NEL SET @WORLD:
app-admin/webapp-config
app-crypt/certbot
app-eselect/eselect-php
dev-lang/php
mail-mta/postfix
net-mail/dovecot
www-apps/postfixadmin
www-servers/apache
Controllo pre-installazione
Buona norma vuole che si utilizzi --pretend --verbose prima di inziare per verificare l'effettiva configurazione impostata dai vostri cambiamenti alla configurazione USE.
root #
emerge --ask --pretend --verbose --update --changed-use --deep @world
Se il risultato rispecchia le USE flag impostate, procedete, altrimenti sarà necessario fermarsi per risolvere il problema rilevato da Portage.
Configurazione script di OpenRC
Tutto quello che si dovrebbe fare qui è verificare gli script di init per i vari servizi installati, aggiungere al runlevel 'default' e riavviare o avviare i servizi soggetti alle modifiche di seguito elencate al paragrafo successivo.
- Servizio database scelto. Il default può andare bene.
- FILE /etc/conf.d/postgresql-$version
- Servizio web scelto da configurare, almeno con i seguenti moduli.
- FILE /etc/conf.d/apache2
- APACHE2_OPTS="-D PHP -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE"
- FILE /etc/conf.d/apache2
Le pagine con estensione .php non funzionano se il server web, non carica il modulo
-D PHP, questo deve essere sempre verificato dopo una installazione fresca di Gentoo.
Configurazione in /etc
Controllare la presenza dei file di configurazione nelle cartelle, modificare a seconda del proprio hostame e dominio, questi file devono essere controllati prima di avviare qualsiasi servizio.
- /etc/postgresql-17/pg_hba.conf
- /etc/postgresql-17/postgresql.conf
- /etc/php/apache2-php8.2/php.ini
Abilita le extension PHP
Consentire il caricamento delle extension PHP, verificare quindi nel file php.ini di seguito:
extension=fileinfo
extension=gd
extension=gettext
extension=gmp
extension=intl
extension=imap
extension=mbstring
extension=openssl
extension=pdo_pgsql
extension=pdo_sqlite
extension=pgsql
extension=shmop
extension=soap
extension=sockets
extension=sqlite3
- Riferimenti alle guide wiki, it#Apache_.28mod_php.29
Per proseguire dovrai prima leggere questo articolo: QuickStart#Preparing to initialize the database cluster
Segui i passaggi nella wiki per fare il bootstrap di PostgreSQL, serve per farsi una idea di massma sul funzionamento del database, dopodiché puoi procedere con la creazione di un utente e un database che userai collegandolo a Postfix Admin.
Creare un utente nel database PostgreSQL
I comandi da usare sono due inizialmente, entra nella shell di postgresql:
root #
psql -U postgres -d postgres Enter
psql (17.2) Digita "help" per avere un aiuto. postgres=#
Dovrai scegliere un nome per il tuo nuovo utente e database, i quali possono essere ovviamente diversi da postfix.
- Questi i comandi da inserire (utente e databaase PostgreSQL)
postgres#>
CREATE USER postfix WITH PASSWORD 'whatever';Enter
postgres#>
CREATE DATABASE postfix OWNER postfix ENCODING 'unicode';Enter
Uscire dalla shell:
postgres#>
\qEnter
Apache Server (MINIMALE)
Non c'è molto da fare con la configurazione di base può andare bene, sottointeso che la preinstallazione dei file configurati da Portage permette un avvio immediato del server Apache da localhost.
File principale configurazione Apache
/etc/apache2/httpd.conf
La configurazione del dominio virtuale va creata da zero, con un file .conf nella cartella
/etc/apache2/vhosts.d
Questo verrà modificato in seguito contestualmente alla installazione di Postfix Admin.
Uso di webapp-config
A seconda della vostra configurazione locale, il sistema può fornire dettagliate indicazioni di pre installazione.
- Avviate lo script in modalità --pretend --verbose, permette una configurazione ottimale, fermatevi qui qualche minuto.
- Verifica e installazione della Web App
root #
webapp-config -VP Tab Tab
Nota che il comando permette l'auto completamento tramite il tasto tab. bash-completition deve essere installato per questo.
root #
webapp-config -VP postfixadmin $version Enter
Il file di configurazione /etc/vhosts/webapp-config permette di impostare nome host, permessi sui file e quindi possibile assegnare uid,gid ecc, a seconda delle vostre necessità. Nessuna configurazione specifica è richiesta per il funzionamento locale, da rete LAN.
- Installare Postfix Admin con il comando:
root #
webapp-config -VI Tab Tab Enter
(Autocompletare nome pacchetto "postfixadmin" versione "3...")
Terminata questa fase lo script fornirà la posizione dei file installati nella cartella, preconfigurata in precedenza.
Consultare la pagina di manuale WEBAPP-CONFIG(8) per tutte le opzioni di configurazione.
Questo è un esempio del percorso standard /var/www/miohost.miodominio.tld/../postfixadmin/
- Ora si può generare un file di configurazione Apache nella cartella /etc/apache2/vhosts.d/10-vhost.conf
In questo file va specificato il nome del dominio, il percorso delle pagine php servite che si trovano nella cartella ../postfixadmin/public/ ed altre opzioni di configurazione tipo uso di SSL e certificati, per queste operazioni si può consultare la pagina della wiki it
Avviare la fase finale
La fase più critica del procedimento di bootstrap di un database creato con il nome postfix
Consiste nel seguire le indicazioni riportate nella schermata del browser dopo aver apportato tutte le modifiche necessarie e riavviato i servizi apache2 e postgresql-$version.
root #
rc-service postgresql-17 restartEnter
root #
rc-service apache2 restartEnter
Configurazine di Postfix Admin
La configurazione si troverà nella cartella
/var/www/serverdiposta.tuodominio.tld/htdocs/postfixadmin/
Il file di configurazione config.local.php viene creato per ospitare i dati di accesso al vostro database locale PostgreSQL e fare un avvio standard (BOOTSTRAP) delle nuove tabelle che verranno manipolate in seguito dalla configurazione Postfix.
Il database postfix viene collegato usando questo file, si evita di perdere tempo con la modifica del file config.inc.php
Un esempio di configurazione config.local.php
Tenere presente che PHP funziona con il proprio markup, il codice inizia con il tag <?php e termina con il tag ?> Ogni linea del codice termina con il punto e virgola.
FILE /var/www/mail.miodominio.tld/htdocs/postfixadmin/config.local.php
<?php
$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'http://miodominio.tld/';
$CONF['database_type'] = 'pgsql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = '$database_user_password';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
// 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'] = 'YES';
// Transport options
// If you want to define additional transport options put them in array below.
$CONF['transport_options'] = array (
'virtual', // for virtual accounts
'local', // for system accounts
'relay' // for backup mx
);
// Transport default
// You should define default transport. It must be in array above.
$CONF['transport_default'] = 'virtual';
// Default aliaas mapping
$CONF['default_aliases'] = array (
'abuse' => 'abuse@miodominio.tld',
'hostmaster' => 'hostmaster@miodominio.tld',
'postmaster' => 'postmaster@miodominio.tld',
'webmaster' => 'webmaster@miodominio.tld'
);
$CONF['fetchmail'] = 'NO';
$CONF['show_footer_text'] = 'NO';
$CONF['quota'] = 'NO';
$CONF['domain_quota'] = 'NO';
$CONF['quota_multiplier'] = '1024000';
$CONF['used_quotas'] = 'NO';
$CONF['new_quota_table'] = 'NO';
$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';
$CONF['maxquota'] = '0';
$CONF['domain_quota_default'] = '0';
// Registro errori
ini_set('error_log', '/var/log/postfixadmin.log');
?>
Questo file presenta una configurazione di partenza minimale che andrà riveduta per adattare le proprie esigenze, come verrà mostrato da Mail Server Virtuali
Primo avvio di postfixadmin
Prestare attenzione alla posizione del file di log dedicato usando la variabile inserita nel file conf.local.php
- Debug errori Postfix Admin, il percorso del file di registro può essere modificato a piacere.
!ini_set('error_log', '/var/log/postfixadmin.log');
Tenere aperto un terminale per verificare il funzionamento di postfixadmin, nel caso di errori... [1]
root #
tail -f /var/log/postfixadmin.log
- Dal browser, puntare alla pagina setup.php nel vhost (localhost) configurato...
- Genera ora la setup password e copiala nel tuo config.local.php seguendo le indicazioni nella pagina del setup.phpAppare nella pagina la riga del $hash generato, selezionate la riga per intero.
$CONF['setup_password'] = '$2y$10$TWPJHYO7e2pJDxeTBOot8.lA/....';
- Ricaricare setup.php , nella finestra del browser.
Questo è il passaggio cruciale, se tutto è stato configurato alla Gentoo way, inserisci la setup password ed avvia il procedimento di BOOTSTRAP del database Postfix Admin.
A questo punto se vi sono errori di connessione non si vedrà nulla apparire sotto la dicitura "Hosting Environment Check" e il registro avrà emesso un errore, controllate il file /var/log/postfixadmin.log
- La Pagina di setup Postfix Admin
Se tutto funziona si vedrà in azione il processo di bootstrap!
- Information
✅ PHP version - 8.2.24 ✅ Webserver - Apache ✅ Postfixadmin installed at - /../mail.miodominio.tld/htdocs/postfixadmin/public ✅ PHP Error log (error_log) is - /tmp/postfixadmin.log ✅ config.local.php file found : /var/www/mail.miodominio.tld/.. ✅ Database - MySQL (pdo_mysql) extension not found ✅ Database - PostgreSQL support available ✅ Password hashing - $CONF["encrypt"] = md5crypt ✅ Password hashing - $CONF["encrypt"] - hash generation OK ✅ Database connection configured OK (using PDO pgsql:dbname=postfix;host=localhost.. ✅ Database connection - Connected OK ✅ Depends on: PHP session support - OK ✅ Depends on: PHP pcre support - OK ✅ Depends on: PHP mbstring support - OK ✅ Optional - PHP IMAP functions - OK
Appunti
Questa parte del cheat sheet per installare Postfix Admin è conclusa.
Scorrendo tutta la pagina del setup.php otterrete tutte le informazioni necessarie per proseguire nella configurazione di Postfix.
Tieni presente che il sistema di posta deve essere ancora configurato per consentire a Postfix e Dovecot di connettersi al database postfix ed interagire con le informazioni inserite attraaaaaaaaaaaaaaaaaverso l'interfaccia web Postfix Admin, il passo successivo consiste nel fare proprio questo, se non già precedentemente svolto, una configurazione minimale Postfix/Dovecot è necessaria per rendere il server di posta funzionante.
Super User Account
Introduzione:
A questo punto un database postfix è pronto per ospitare i dati degli account Postfix nel nuovo server di posta, quindi proseguire nella creazione dell'account Super Admin.
- Controllo del database con psql -U postfix -c postfix Enter prima di iniziare:
- Comandi rapidi:
- Tabelle nel database
- psql#> \dt Enter Mostra un elenco di tabelle, Postfix Admin crea 13 tabelle
- psql#> \di Enter Mostra le relazioni, 22 voci nell'elenco.
- Comandi rapidi:
Con questo torna utile nella configurazione postfix per dare un senso alle query usate.
- Opzionale
Esegui una query nel database postfix tramite la shell PostgreSQL
- Questo comando consente una verifica del tipo di tabelle che in PostgreSQL vengono chiamati ROLE quindi, usiamo la funzione <src>VIEW nella shell pgsql, per memorizzare come etichette le query inserite, permette di tenere traccia facilmente delle modifiche nel nuovo databse postfix.
- Questo comando consente una verifica del tipo di tabelle che in PostgreSQL vengono chiamati ROLE quindi, usiamo la funzione <src>VIEW nella shell pgsql, per memorizzare come etichette le query inserite, permette di tenere traccia facilmente delle modifiche nel nuovo databse postfix.
- Sezione in fase di costruzione.