postfixAdmin
part-1: https://www.youtube.com/watch?v=fh6NbhUtBfw
########Note, Replace :
#
Domain name = hvthang.xyz = Your-Domain
Hostname = mail = Your-Hostname
Group name = happyghost = Your-Group
User name = happyghost = Your-User
Database name = postfixadmindb = Your-Database-Name
Database user = postfixuser = Your-Database-User
Database password = PostfixAdminPWD = Your-Database-Password
Mail Local = virtualmailbox = Your-Local
########Important
## If you change something, be careful to change this in any configuration in the next steps.#apt install apache2 libapache2-mod-php mariadb-server php-fpm php-imap php-mbstring php-mysql php-json php-curl php-zip php-xml php-bz2 php-intl php-gmp -y
apt install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-lmtpd dovecot-imapd dovecot-pop3d -y
groupadd -g 5000 happyghost
useradd -g happyghost -u 5000 happyghost -s /sbin/nologin create database postfixadmindb;
create user postfixuser@localhost identified by 'PostfixAdminPWD';
grant all on postfixadmindb.* to postfixuser@localhost;
Part-2: https://www.youtube.com/watch?v=JBiy1mRZSWo
########Note, Replace :
#
Domain name = hvthang.xyz = Your-Domain
Hostname = mail = Your-Hostname
Group name = happyghost = Your-Group
User name = happyghost = Your-User
Database name = postfixadmindb = Your-Database-Name
Database user = postfixuser = Your-Database-User
Database password = PostfixAdminPWD = Your-Database-Password
Mail Local = virtualmailbox = Your-Local
########Important
#
# If you change something, be careful to change this in any configuration in the next steps.
#
####[7.2]
vim mysql_virtual_alias_domain_catchall_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
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'
####[7.3]
vim mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
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'
####[7.4]
vim mysql_virtual_alias_domain_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
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'
####[7.5]
vim mysql_virtual_alias_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
####[7.6]
vim mysql_virtual_domains_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
####[7.7]
vim mysql_virtual_mailbox_limit_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
####[7.8]
vim mysql_virtual_mailbox_maps.cf
user = postfixuser
password = PostfixAdminPWD
hosts = localhost
dbname = postfixadmindb
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#####[ 8.1.5 ]
### Configure Postfix to use MariaDB/MySQL Database ( step 7.2 to step 7.8 )
virtual_mailbox_domains = proxy:mysql:/etc/postfix/query/mysql_virtual_domains_maps.cf
virtual_alias_maps =
proxy:mysql:/etc/postfix/query/mysql_virtual_alias_maps.cf,
proxy:mysql:/etc/postfix/query/mysql_virtual_alias_domain_maps.cf,
proxy:mysql:/etc/postfix/query/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
proxy:mysql:/etc/postfix/query/mysql_virtual_mailbox_maps.cf,
proxy:mysql:/etc/postfix/query/mysql_virtual_alias_domain_mailbox_maps.cf
### Enable auth
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_base = /var/virtualmailbox
virtual_minimum_uid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
##### [ End 8.1.5 ]
#####
##### [9.1.5]
mail_location = maildir:/var/virtualmailbox/%d/%n
mail_privileged_group = happyghost
mail_uid = happyghost
mail_gid = happyghost
first_valid_uid = 5000
last_valid_uid = 5000
###
##### [ 9.3.1 ]
driver = mysql
connect = host=localhost dbname=postfixadmindb user=postfixuser password=PostfixAdminPWD
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/virtualmailbox/%d/%n' as userdb_home, 'maildir:/var/virtualmailbox/%d/%n' as userdb_mail, 5000 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/var/virtualmailbox/%d/%u' as home, 'maildir:/var/virtualmailbox/%d/%u' as mail, 5000 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
###LMTP service [ 9.6.3 ]
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
###AUTH service [ 9.6.4 ]
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = happyghost
}
user = dovecot
###AUTH-WORKER service [ 9.6.5 ]
user = happyghost
part-3: https://www.youtube.com/watch?v=fLwnaQUfw24
wget https://udomain.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixuser';
$CONF['database_password'] = 'PostfixAdminPWD';
$CONF['database_name'] = 'postfixadmindb';
$CONF['configured'] = true;
$CONF['encrypt'] = 'md5crypt';
?>
<VirtualHost *:80>
DocumentRoot /var/www/postfixadmin/public
ServerName hvthang.xyz
ServerAlias postfixadmin.hvthang.xyz
<Directory /var/www/postfixadmin/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>