====== E) Installation: postfixadmin web gui ======
PostfixAdmin is a neat web GUI that let's you monitor, create domains, accounts and much more on your web server.
===== USE flags =====
PostfixAdmin is a PHP application which you will be running with NGINX + PHP-FPM.
Ensure your PHP has the **imap** USE flag enabled:
echo "dev-lang/php imap" >> /etc/portage/package.use/mailserver
===== Manual Installation =====
PostfixAdmin is available in portage, but installing via emerge would be not really inline with how i manage the webapps on my external server. I will show you how i have installed it manually, which is not that difficult at all.
Download latest release of **postfixadmin** from [[https://github.com/postfixadmin/postfixadmin/releases|here]] and decompress in a folder accessible to the **web** user, since i use the **web** user to run all PHP based software on the external webserver:
su # do this as root! You don't need to make postfixadmin writable by the web user
cd /home/web
mkdir postfixadmin
cd postfixadmin
wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.15.tar.gz
tar xvf postfixadmin-3.3.15.tar.gz
mv postfixadmin-postfixadmin-3.3.15 postfixadmin
#The following folder must be writeable by web user:
mkdir -p postfixadmin/templates_c
chown -R web postfixadmin/templates_c
===== Reverse Proxy =====
Of course PostfixAdmin will need to be behind the reverse proxy, both for security and to wrap it with HTTPS.
See [[selfhost:nginx|this page]]) for more detail on NGINX setup.
For reference, here is my specific configuration:
server {
server_name mail.mydomain.com;
listen 443 ssl;
access_log /var/log/nginx/mail.mydomain.com_access_log main;
error_log /var/log/nginx/mail.mydomain.com_error_log info;
index index.php;
root /home/web/postfixadmin/postfixadmin/public;
# Uncomment the following lines only AFTER setup is complete!
# location ~ /(setup.php) {
# deny all;
# alias /home/web/postfixadmin/postfixadmin/public;
# }
location ~ /.*\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass 127.0.0.1:9000;
}
}
===== Finalization =====
Restart NGINX and go to the URL **https://mail.mydomain.com/setup.php** and follow the on-screen instructions to create a password hash that you need to add to the above config.local.php file, then reload the page itself.
Also don't forget to create a superadmin-account. I suggest you call it **user@mydomain.com** and set a password you will not forget.
Go back, uncomment the lines in the NGINX config file to disable the setup.php, and restart NGINX.
Installation is now complete.