|
| 1 | +#!/usr/bin/env php |
| 2 | +<?php |
| 3 | +function setupSsmtpConf() { |
| 4 | + $ssmtp = $_ENV['SSMTP_URI']; |
| 5 | + |
| 6 | + if (!$ssmtp) { |
| 7 | + echo 'SSMTP_URI env variable is empty. Skip ssmtp setup...' . "\n"; |
| 8 | + exit(0); |
| 9 | + } |
| 10 | + |
| 11 | + $ssmtp = parse_url($ssmtp); |
| 12 | + |
| 13 | + if (!$ssmtp['scheme'] || !$ssmtp['host']) { |
| 14 | + echo 'Wrong URI format for SSMTP_URI!' . "\n"; |
| 15 | + exit(1); |
| 16 | + } |
| 17 | + |
| 18 | + $conf = [ |
| 19 | + 'FromLineOverride=YES', |
| 20 | + ]; |
| 21 | + |
| 22 | + $conf[] = 'mailhub=' . $ssmtp['host'] . ($ssmtp['port'] ? ':' . $ssmtp['port'] : ''); |
| 23 | + |
| 24 | + if ($ssmtp['user']) { |
| 25 | + $conf[] = 'AuthUser=' . $ssmtp['user']; |
| 26 | + } |
| 27 | + |
| 28 | + if ($ssmtp['pass']) { |
| 29 | + $conf[] = 'AuthPass=' . $ssmtp['pass']; |
| 30 | + } |
| 31 | + |
| 32 | + if ($_ENV['DOMAIN']) { |
| 33 | + $conf[] = 'RewriteDomain=' . $_ENV['DOMAIN']; |
| 34 | + } |
| 35 | + |
| 36 | + if ($_ENV['SSMTP_DEBUG']) { |
| 37 | + $conf[] = 'Debug=YES'; |
| 38 | + } |
| 39 | + |
| 40 | + if (strpos(strtolower($ssmtp['scheme']), 'tls') !== false) { |
| 41 | + $conf[] = 'UseTLS=YES'; |
| 42 | + $conf[] = 'TLS_CA_File=/etc/ssl/certs/ca-certificates.crt'; |
| 43 | + } |
| 44 | + |
| 45 | + $conf = implode("\n", $conf); |
| 46 | + file_put_contents('/etc/ssmtp/ssmtp.conf', $conf, FILE_APPEND | LOCK_EX); |
| 47 | +} |
| 48 | + |
| 49 | +function setupRevAliases() { |
| 50 | + if (!$_ENV['SSMTP_DEFAULT_FROM']) { |
| 51 | + echo 'SSMTP_DEFAULT_FROM env variable is empty. Skip ssmtp revaliases setup...' . "\n"; |
| 52 | + exit(0); |
| 53 | + } |
| 54 | + |
| 55 | + exec('cut -d: -f1 /etc/passwd', $users, $tmp); |
| 56 | + |
| 57 | + if ($tmp !== 0) { |
| 58 | + echo 'Cannot get system users list'; |
| 59 | + exit($tmp); |
| 60 | + } |
| 61 | + |
| 62 | + unset($tmp); |
| 63 | + |
| 64 | + $ssmtp = parse_url($_ENV['SSMTP_URI']); |
| 65 | + |
| 66 | + $mailhub = $ssmtp['host'] . ($ssmtp['port'] ? ':' . $ssmtp['port'] : ''); |
| 67 | + |
| 68 | + $users = array_map(function ($user) use ($mailhub) { |
| 69 | + return $user . ':' . $_ENV['SSMTP_DEFAULT_FROM'] . ':' . $mailhub; |
| 70 | + }, $users); |
| 71 | + |
| 72 | + file_put_contents( |
| 73 | + '/etc/ssmtp/revaliases', |
| 74 | + implode("\n", $users), |
| 75 | + FILE_APPEND | LOCK_EX |
| 76 | + ); |
| 77 | +} |
| 78 | + |
| 79 | +setupRevAliases(); |
| 80 | +setupSsmtpConf(); |
0 commit comments