Files
mail-postfixadmin/conf/config.local.php
2026-02-12 17:31:08 -03:00

110 lines
4.7 KiB
PHP

<?php
/**
* PostfixAdmin config: sensitive values from ENV (no default), rest configurable via ENV with defaults.
* See .env.example for all variable names.
*/
$CONF['configured'] = true;
// --- Helpers: required ENV (no default) vs optional with default ---
function pfa_env(string $key, ?string $default = null): string {
$v = getenv($key);
if ($default === null) {
if ($v === false || $v === '') {
throw new \RuntimeException('Set ' . $key);
}
return $v;
}
return ($v === false || $v === '') ? $default : $v;
}
function pfa_env_bool(string $key, bool $default = true): bool {
$v = getenv($key);
if ($v === false || $v === '') {
return $default;
}
return filter_var($v, FILTER_VALIDATE_BOOLEAN);
}
// Sensitive: no default (must be set in ENV / .env)
$CONF['setup_password'] = pfa_env('PFA_SETUP_PASSWORD');
$CONF['database_password'] = pfa_env('PFA_DATABASE_PASSWORD');
$CONF['admin_smtp_password'] = pfa_env('PFA_ADMIN_SMTP_PASSWORD');
// Database configuration
$CONF['database_host'] = pfa_env('PFA_DATABASE_HOST', 'mail.mifi.holdings');
$CONF['database_user'] = pfa_env('PFA_DATABASE_USER', 'postfixadmin');
$CONF['database_name'] = pfa_env('PFA_DATABASE_NAME', 'postfix');
$CONF['database_type'] = pfa_env('PFA_DATABASE_TYPE', 'mysqli');
// Password encryption
$CONF['encrypt'] = pfa_env('PFA_ENCRYPT', 'php_crypt:BLOWFISH:13:{BLF-CRYPT}');
// Branding and URLs
$CONF['site_url'] = pfa_env('PFA_SITE_URL', 'https://postmaster.mifi.holdings');
$CONF['site_name'] = pfa_env('PFA_SITE_NAME', 'mifi Ventures Email Service');
// Language & charset
$CONF['default_language'] = pfa_env('PFA_DEFAULT_LANGUAGE', 'en');
$CONF['default_charset'] = pfa_env('PFA_DEFAULT_CHARSET', 'UTF-8');
// Password validation (array left in file; override via config.inc.php if needed)
$CONF['password_validation'] = array(
'/.{5}/' => 'password_too_short 5',
'/([a-zA-Z].*){3}/' => 'password_no_characters 3',
'/([0-9].*){1}/' => 'password_no_digits 2',
'/([!\".,*&^%$£)(_+=\-`\'#@~\[\]\\<>\/].*){1,}/' => 'password_no_special 1',
);
// Features
$CONF['special_alias_control'] = pfa_env('PFA_SPECIAL_ALIAS_CONTROL', 'NO');
$CONF['backup'] = pfa_env('PFA_BACKUP', 'NO');
$CONF['fetchmail'] = pfa_env('PFA_FETCHMAIL', 'NO');
$CONF['sendmail'] = pfa_env('PFA_SENDMAIL', 'NO');
$CONF['app_passwords'] = pfa_env('PFA_APP_PASSWORDS', 'YES');
// Welcome and footer text (branding + docs)
$CONF['welcome_text'] = pfa_env('PFA_WELCOME_TEXT', 'Welcome to mifi Ventures Email Service — <a href="https://mail.mifi.holdings/help" target="_blank">help</a>');
$CONF['show_header_text'] = pfa_env('PFA_SHOW_HEADER_TEXT', 'YES');
$CONF['header_text'] = pfa_env('PFA_HEADER_TEXT', 'mifi Ventures Email Service');
$CONF['footer_text'] = pfa_env('PFA_FOOTER_TEXT', 'mifi Ventures Mail');
$CONF['footer_link'] = pfa_env('PFA_FOOTER_LINK', 'https://mail.mifi.holdings');
// Default aliases (array; edit in file or extend via config.inc.php)
$CONF['default_aliases'] = array(
'alerts' => 'alerts@mifi.holdings',
'abuse' => 'abuse@mifi.holdings',
'hostmaster' => 'hostmaster@mifi.holdings',
'postmaster' => 'postmaster@mifi.holdings',
'webmaster' => 'webmaster@mifi.holdings'
);
// Quota and mailbox limits
$CONF['quota'] = pfa_env('PFA_QUOTA', 'YES');
$CONF['used_quotas'] = pfa_env('PFA_USED_QUOTAS', 'YES');
$CONF['mailboxes'] = pfa_env('PFA_MAILBOXES', '100');
$CONF['maxquota'] = pfa_env('PFA_MAXQUOTA', '10240');
$CONF['domain_quota_default'] = pfa_env('PFA_DOMAIN_QUOTA_DEFAULT', '102400');
// SMTP settings for admin notifications
$CONF['admin_email'] = pfa_env('PFA_ADMIN_EMAIL', 'noreply@mifi.holdings');
$CONF['admin_name'] = pfa_env('PFA_ADMIN_NAME', 'mifi Ventures Postmaster');
$CONF['smtp_server'] = pfa_env('PFA_SMTP_SERVER', 'mail.mifi.holdings');
$CONF['smtp_port'] = pfa_env('PFA_SMTP_PORT', '587');
$CONF['smtp_type'] = pfa_env('PFA_SMTP_TYPE', 'starttls');
$CONF['smtp_auth'] = pfa_env_bool('PFA_SMTP_AUTH', true);
// Self-service and editing
$CONF['edit_mailbox'] = pfa_env_bool('PFA_EDIT_MAILBOX', true);
$CONF['edit_alias'] = pfa_env_bool('PFA_EDIT_ALIAS', true);
$CONF['forgotten_admin_password_reset'] = pfa_env_bool('PFA_FORGOTTEN_ADMIN_PASSWORD_RESET', true);
$CONF['forgotten_user_password_reset'] = pfa_env_bool('PFA_FORGOTTEN_USER_PASSWORD_RESET', true);
$CONF['admin_2fa'] = pfa_env_bool('PFA_ADMIN_2FA', true);
// API (comma-separated list for api_allow_from)
$CONF['api_enabled'] = pfa_env_bool('PFA_API_ENABLED', true);
$CONF['api_allow_from'] = array_map('trim', explode(',', pfa_env('PFA_API_ALLOW_FROM', '127.0.0.1,::1')));
// Session timeout (seconds)
$CONF['session_timeout'] = (int) pfa_env('PFA_SESSION_TIMEOUT', '1800');