ISPConfig 3 issueshttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues2023-09-28T19:18:18Zhttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6581PHP-FPM reload mode "restart" ignored when using Nginx webserver2023-09-28T19:18:18ZManoa RatefiarisonPHP-FPM reload mode "restart" ignored when using Nginx webserver## Summary
When using Nginx as webserver, the PHP-FPM reload mode is totally ignored. No matters you put reload or restart, ISPConfig always reload PHP-FPM.
## Steps to reproduce
1. Install ISPConfig with Nginx
2. Install additional PHP...## Summary
When using Nginx as webserver, the PHP-FPM reload mode is totally ignored. No matters you put reload or restart, ISPConfig always reload PHP-FPM.
## Steps to reproduce
1. Install ISPConfig with Nginx
2. Install additional PHP version
3. Enable debug mode and set PHP-FPM reload mode to "restart"
4. Create/edit site with PHP-FPM enabled and choose a version
5. Look at logs
## Correct behaviour
ISPConfig should restart PHP-FPM instead of reload if this is specified like this in the configuration.
## Environment
Server OS + version: Debian 11.1
ISPConfig version: 3.2.11
Software version of the related software:
```
root@server:~# nginx -v
nginx version: nginx/1.18.0
root@server:~# php8.1 -v
PHP 8.1.0 (cli) (built: Nov 25 2021 20:48:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.0, Copyright (c) Zend Technologies
with Zend OPcache v8.1.0, Copyright (c), by Zend Technologies
```
(This is the PHP 8.1 from deb.sury.org repository)
## Proposed fix
The problem is on `nginx_plugin.inc.php` line 3054, the reload mode is hardcoded to "reload":
```
$app->services->restartService('php-fpm', 'reload:'.$php_version['php_fpm_init_script']);
```
Instead of hardcoding like this, we can reuse the code on `apache2_plugin.inc.php` to get the reload mode and use it properly:
```
$web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
$php_fpm_reload_mode = ($web_config['php_fpm_reload_mode'] == 'reload')?'reload':'restart';
$app->services->restartService('php-fpm', $php_fpm_reload_mode.':'.$web_config['php_fpm_init_script']);
```
## Related log entries
```
26.09.2023-08:26 - DEBUG [nginx plugin.inc:3032] - Writing the PHP-FPM config file: /etc/php/8.1/fpm/pool.d/web5.conf
26.09.2023-08:26 - DEBUG [services.inc:56] - Calling function 'restartPHP_FPM' from module 'web_module'.
26.09.2023-08:26 - DEBUG [system.inc:2083] - Trying to use Systemd to restart service
26.09.2023-08:26 - DEBUG [system.inc:2431] - safe_exec cmd: systemctl is-enabled 'php8.1-fpm' 2>&1 - return code: 0
26.09.2023-08:26 - DEBUG [system.inc:2098] - ######################################reload php8.1-fpm
26.09.2023-08:26 - DEBUG [web module.inc:316] - Restarting php-fpm: systemctl reload php8.1-fpm.service
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6575Validation bug in DNS DMARC2023-09-14T21:28:18ZPyte CValidation bug in DNS DMARC## Summary
<!-- What is happening and what is wrong with that? -->
When trying to create a DMARC record for a domain where the DKIM is configured via a CNAME record ISPConfig errors with `dmarc_no_dkim_txt`.
As this is a valid setup (see...## Summary
<!-- What is happening and what is wrong with that? -->
When trying to create a DMARC record for a domain where the DKIM is configured via a CNAME record ISPConfig errors with `dmarc_no_dkim_txt`.
As this is a valid setup (see O365 docs for example) the validation function needs to be corrected.
Reference thread in the forums: https://forum.howtoforge.com/threads/configuring-dkim-and-dmarc-with-office-365.91120/#post-449340
## Steps to reproduce
1. Create a CNAME that point to the DKIM Record
2. Trying adding a DMARC Record
3. Result: Error dmarc_no_dkim_txt
## Correct behaviour
The validation should not check, as it is possible that the record is not configured in the same zone.
## Proposed fix
The file in question is interface/web/dns/dns_dmarc_edit.php lines 229-236:
```
// DMARC requieres at least one active dkim-record...
$sql = "SELECT * FROM dns_rr
LEFT JOIN dns_soa ON (dns_rr.zone=dns_soa.id)
WHERE dns_soa.origin = ? AND dns_rr.name LIKE ? AND type='TXT' AND data like 'v=DKIM1;%' AND dns_rr.active='Y'";
$temp = $app->db->queryAllRecords($sql, $soa['origin'], '%._domainkey%');
if (empty($temp)) {
if (isset($app->tform->errorMessage )) $app->tform->errorMessage = '<br/>' . $app->tform->errorMessage;
$app->tform->errorMessage .= $app->tform->wordbook['dmarc_no_dkim_txt'].$email;
}
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6573[installer] All ISPConfig files have execute bit set after installation.2023-09-16T14:53:19ZDr. Yves Kreis[installer] All ISPConfig files have execute bit set after installation.All ISPConfig files have execute bit set after installation. This is unnecessary and confusing.
However /usr/local/ispconfig/server/scripts/<ispconfig_patch|vlogger> need execute bit.
Besides /usr/local/ispconfig/interface/lib/config.in...All ISPConfig files have execute bit set after installation. This is unnecessary and confusing.
However /usr/local/ispconfig/server/scripts/<ispconfig_patch|vlogger> need execute bit.
Besides /usr/local/ispconfig/interface/lib/config.inc.php~ isn't protected.3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6572[installer] Undefined variable $issued_successfully2023-09-09T05:38:56ZDr. Yves Kreis[installer] Undefined variable $issued_successfullyOutput from the installer:
```
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:
Checking / creating certificate for _hostname_
Using certificate path /etc/letsencrypt/live/_hostname_
Server's public ip(s...Output from the installer:
```
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:
Checking / creating certificate for _hostname_
Using certificate path /etc/letsencrypt/live/_hostname_
Server's public ip(s) (_IP_) not found in A/AAAA records for _hostname_: _IP_
Ignore DNS check and continue to request certificate? (y,n) [n]:
PHP Warning: Undefined variable $issued_successfully in /tmp/ispconfig3_install/install/lib/installer_base.lib.php on line 3319
Could not issue letsencrypt certificate, falling back to self-signed.
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6568[installer] jailkit php 8.2 references wrong directory2023-09-06T08:49:02ZDr. Yves Kreis[installer] jailkit php 8.2 references wrong directoryIn `install/tpl/jk_init.ini.master` the paths for php 8.2 contains `/usr/lib/php/20210902/` while this should be `/usr/lib/php/20220829/`.In `install/tpl/jk_init.ini.master` the paths for php 8.2 contains `/usr/lib/php/20210902/` while this should be `/usr/lib/php/20220829/`.3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6567[installer] jailkit wrong file backup'ed2023-09-06T08:49:35ZDr. Yves Kreis[installer] jailkit wrong file backup'edDuring the installation of jailkit, a backup of `$config_dir.'/'.$jk_chrootsh.'.master'` is created. However, `$config_dir.'/'.$jk_chrootsh` is overwritten later on, and thus the backup should also be done of that file!During the installation of jailkit, a backup of `$config_dir.'/'.$jk_chrootsh.'.master'` is created. However, `$config_dir.'/'.$jk_chrootsh` is overwritten later on, and thus the backup should also be done of that file!3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6566[installer] rspamd configuration files have execute bit set2023-09-06T08:50:14ZDr. Yves Kreis[installer] rspamd configuration files have execute bit setIn the installer the configuration files (lines 2000 to 2010 & 2020 to 2023 and 2033 to 2038) have the execute bit set and are copied; so they keep the execute bit set afterwards which is bad style. Besides `groups.conf` is listed twice ...In the installer the configuration files (lines 2000 to 2010 & 2020 to 2023 and 2033 to 2038) have the execute bit set and are copied; so they keep the execute bit set afterwards which is bad style. Besides `groups.conf` is listed twice in the first set.3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6565[installer] dovecot does wrong file check2023-09-06T08:50:47ZDr. Yves Kreis[installer] dovecot does wrong file checkIn `configure_dovecot()` the installer is creating `master.cf~2` however the check is for `master.cf`!In `configure_dovecot()` the installer is creating `master.cf~2` however the check is for `master.cf`!3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6564[installer] master.cf changed on Debian 12 aka Bookworm2023-09-06T08:51:16ZDr. Yves Kreis[installer] master.cf changed on Debian 12 aka Bookworm## Summary
master.cf has changed on Debian 12 aka Bookworm. Thus the change of maildrop service in postfix master.cf does not work anymore.
## Steps to reproduce
1. (Auto)Install ISPConfig on Debian 12 aka Bookworm
2. Check /etc/postfix...## Summary
master.cf has changed on Debian 12 aka Bookworm. Thus the change of maildrop service in postfix master.cf does not work anymore.
## Steps to reproduce
1. (Auto)Install ISPConfig on Debian 12 aka Bookworm
2. Check /etc/postfix/master.cf
```
maildrop unix - n n - - pipe
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
```
## Correct behaviour
```
maildrop unix - n n - - pipe
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d vmail ${extension} ${recipient} ${user} ${nexthop} ${sender}
```
## Environment
Server OS + version: Debian 12 \
ISPConfig version: 3.2dev \
Software version of the related software:
```
postfix 3.7.6-0+deb12u2
```
## Proposed fix
Lines 1365-1367 in install/lib/installer_base.lib.php
```
$content = preg_replace('/flags=(DRX?hu) user=vmail argv=\/usr\/bin\/maildrop -d \${recipient}/',
'flags=$1 user='.$cf['vmail_username'].' argv=/usr/bin/maildrop -d '.$cf['vmail_username'].' \${extension} \${recipient} \${user} \${nexthop} \${sender}',
$content);
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6561Database user permissions are not returned as they should be.2023-09-16T14:50:57ZAlexandre Pereira BühlerDatabase user permissions are not returned as they should be.MariaDB 10.3. Debian buster. ISPConfig 3.2.11.
Steps to reproduce.
1) Create a database and user.
2) Create a table.
3) Overflow the database quota.
4) The next day when we increase the database quota.
The user's permissions are not corr...MariaDB 10.3. Debian buster. ISPConfig 3.2.11.
Steps to reproduce.
1) Create a database and user.
2) Create a table.
3) Overflow the database quota.
4) The next day when we increase the database quota.
The user's permissions are not corrected.
They remain the same as when the quota was exceeded.
They look like in the image with the number 2.
![beforequotaexceeded](/uploads/e43065b1c9809d9db19e15afe111ceae/beforequotaexceeded.PNG)
![afterquotaexceeded](/uploads/975ecb97081cdcf10a644cbcdf3d9f9b/afterquotaexceeded.PNG)https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6560client info is showing the data of all clients2023-09-16T14:51:06ZAlexandre Pereira Bühlerclient info is showing the data of all clientsGood morning,
In the clients grid, when you click on a client, the client info is showing the data of all the clients.
Shouldn't it only show the data of the selected customer?
Thank youGood morning,
In the clients grid, when you click on a client, the client info is showing the data of all the clients.
Shouldn't it only show the data of the selected customer?
Thank you3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6558Add better default values when adding a new spamfilter policy.2023-08-18T14:32:54ZTill BrehmAdd better default values when adding a new spamfilter policy.https://forum.howtoforge.com/threads/error-creating-new-email-spamfilter-policy.90997/https://forum.howtoforge.com/threads/error-creating-new-email-spamfilter-policy.90997/3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6549Switching form tabs does not work when opening website form from dashboard2023-08-04T16:37:15ZTill BrehmSwitching form tabs does not work when opening website form from dashboardhttps://forum.howtoforge.com/threads/possible-interface-issue.90918/#post-448095https://forum.howtoforge.com/threads/possible-interface-issue.90918/#post-4480953.2.11https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6543mysqldump command has been renamed to mariadb-dump in latest versions2023-12-04T14:34:35ZTill Brehmmysqldump command has been renamed to mariadb-dump in latest versionshttps://forum.howtoforge.com/threads/how-to-upgrade-mariadb-with-ispconfig.89509/#post-447776https://forum.howtoforge.com/threads/how-to-upgrade-mariadb-with-ispconfig.89509/#post-4477763.2.13https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6540PHP Warnings and issues with character set in MySQL 82023-09-24T11:03:56ZTill BrehmPHP Warnings and issues with character set in MySQL 8https://forum.howtoforge.com/threads/migrate-mysql-to-mariadb.90840/#post-447639https://forum.howtoforge.com/threads/migrate-mysql-to-mariadb.90840/#post-447639https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6535mail alias on domain alias does not work2023-09-16T14:50:17Zdoekiamail alias on domain alias does not work## Summary
email to an aliased email on an aliased domain does not work
## Steps to reproduce
1. have an email alice@example.com
2. have an email alias bob@example.com => alice@example.com
3. have a domain alias @alternate.com => @examp...## Summary
email to an aliased email on an aliased domain does not work
## Steps to reproduce
1. have an email alice@example.com
2. have an email alias bob@example.com => alice@example.com
3. have a domain alias @alternate.com => @example.com
4. Try to send an email to bob@alternate.com
5. 550 5.1.1 <bob@alternate.com>: Recipient address rejected: User unknown in virtual alias table;
## Correct behaviour
Mail to be send to alice@example.com
## Environment
Debian 11
ISPConfig Version: 3.2.9p1
Apache2.4
## Proposed fix
See the patched query entry in /etc/postfix/mysql-virtual_forwardings.cf
#> postmap -q "bob@alternate.com" mysql:/etc/postfix/mysql-virtual_forwardings.cf
alice@example.com
```
query = SELECT s.destination AS target FROM mail_forwarding AS s
WHERE (s.source = '%s' OR s.source = CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d'))
AND s.type IN ('alias', 'forward') AND s.active = 'y' AND s.server_id = 1
UNION
SELECT s.destination AS target FROM mail_forwarding AS s
WHERE s.source = '@%d' AND s.type = 'catchall'
AND s.active = 'y' AND s.server_id = 1
AND NOT EXISTS (
SELECT email FROM mail_user
WHERE (email = '%s' OR email = CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d'))
AND EXISTS (
SELECT domain_id FROM mail_domain
WHERE domain = SUBSTRING_INDEX('%s', '@', -1)
AND active = 'y' AND server_id = 1
)
AND server_id = 1
)
AND NOT EXISTS (
SELECT source FROM mail_forwarding
WHERE (source = '%s' OR source = CONCAT(SUBSTRING_INDEX('%u', '+', 1), '@%d'))
AND active = 'y' AND server_id = 1
)
UNION
SELECT s.destination AS target FROM mail_forwarding AS s
INNER JOIN mail_forwarding AS s2
ON ( s2.source = '@%d'
AND s2.type = 'aliasdomain'
AND s2.active = 'y'
AND s2.server_id = 1)
WHERE (s.source = CONCAT(SUBSTRING_INDEX('%u', '+', 1), s2.destination))
AND s.type IN ('alias', 'forward')
AND s.active = 'y'
AND s.server_id = 1
```
PS: This settings (multiple alias) was working under ISPConfig Version: 3.1.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6533Domain module prevents subdomains to be added for domains that exist as website2023-07-28T07:05:34ZTill BrehmDomain module prevents subdomains to be added for domains that exist as websitehttps://forum.howtoforge.com/threads/ispconfig-3-2-10p1-subdomain-for-website.90816/https://forum.howtoforge.com/threads/ispconfig-3-2-10p1-subdomain-for-website.90816/3.2.10p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6530PowerDNS MySQL schema update2023-09-16T14:49:03ZArtur YakupovPowerDNS MySQL schema update
## Summary
Updated MySQL schema for PowerDNS prevents correct work.
/usr/share/pdns-backend-mysql/schema# cat ./4.1.0_to_4.2.0_schema.mysql.sql
ALTER TABLE domains MODIFY notified_serial INT UNSIGNED DEFAULT NULL;
ALTER TABLE records D...
## Summary
Updated MySQL schema for PowerDNS prevents correct work.
/usr/share/pdns-backend-mysql/schema# cat ./4.1.0_to_4.2.0_schema.mysql.sql
ALTER TABLE domains MODIFY notified_serial INT UNSIGNED DEFAULT NULL;
ALTER TABLE records DROP COLUMN change_date;
## Steps to reproduce
Implement PowerDNS with MySQL schema starting from 4.2.0 version of PowerDNS.
## Correct behaviour
Schemas should be compatible
## Environment
Server OS + version: Debian 10 and up
ISPConfig version: 3.9.0 and up
Software version of the related software: PowerDNS 4.2.0 and up
## Proposed fix to ispconfig/server/plugins-available/powerdns_plugin.inc.php
```
58d57
< `change_date` int(11) default NULL,
150c149
< $app->db->query("INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, change_date, ispconfig_id) VALUES (?, ?, 'SOA', ?, ?, 0, UNIX_TIMESTAMP(), ?)", $zone_id, $origin, $content, $ttl, $ispconfig_id);
---
> $app->db->query("INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, ispconfig_id) VALUES (?, ?, 'SOA', ?, ?, 0, ?)", $zone_id, $origin, $content, $ttl, $ispconfig_id);
184c183
< $app->db->query("UPDATE powerdns.records SET name = ?, content = ?, ttl = ?, change_date = UNIX_TIMESTAMP() WHERE ispconfig_id = ? AND type = 'SOA'", $origin, $content, $ttl, $data["new"]["id"]);
---
> $app->db->query("UPDATE powerdns.records SET name = ?, content = ?, ttl = ? WHERE ispconfig_id = ? AND type = 'SOA'", $origin, $content, $ttl, $data["new"]["id"]);
328d326
< $change_date = time();
331c329
< $app->db->query("INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, change_date, ispconfig_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", $zone_id, $name, $type, $content, $ttl, $prio, $change_date, $ispconfig_id);
---
> $app->db->query("INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, ispconfig_id) VALUES (?, ?, ?, ?, ?, ?, ?)", $zone_id, $name, $type, $content, $ttl, $prio, $ispconfig_id);
394d391
< $change_date = time();
396c393
< $app->db->query("UPDATE powerdns.records SET name = ?, type = ?, content = ?, ttl = ?, prio = ?, change_date = UNIX_TIMESTAMP() WHERE ispconfig_id = ? AND type != 'SOA'", $name, $type, $content, $ttl, $prio, $ispconfig_id);
---
> $app->db->query("UPDATE powerdns.records SET name = ?, type = ?, content = ?, ttl = ?, prio = ? WHERE ispconfig_id = ? AND type != 'SOA'", $name, $type, $content, $ttl, $prio, $ispconfig_id);
```
## Related log entries
16.06.2023-09:46 - WARNING - Falsche Anfrage / Wrong QuerySQL-Query = INSERT INTO powerdns.records (domain_id, name, type, content, ttl, prio, change_date, ispconfig_id) VALUES ('143', '***', 'A', '*****', '3600', '0', 1686897961, '4950') -> 1054 (Unknown column 'change_date' in 'field list')https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6528Account limit incorrectly informed in dashboard - ISPConfig 3.2.102023-08-23T11:23:42ZAlexandre Pereira BühlerAccount limit incorrectly informed in dashboard - ISPConfig 3.2.10In ISPConfig 3.2.10 account limits are being reported as unlimited for customers.
It is for the administrator is informed without values or with wrong values..
example for customers:
Assigned web quota 50200 MB of Unlimited MB
example fo...In ISPConfig 3.2.10 account limits are being reported as unlimited for customers.
It is for the administrator is informed without values or with wrong values..
example for customers:
Assigned web quota 50200 MB of Unlimited MB
example for admin:
Assigned database quota MB of Unlimited MB
Prints do bug no fórum do ispconfig:
https://forum.howtoforge.com/threads/account-limit-incorrectly-informed-in-dashboard-ispconfig-3-2-10.90743/3.2.10p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6525php error if function formatBytes get calles with some non numeric value2023-06-10T05:19:08ZHannesphp error if function formatBytes get calles with some non numeric valueOnly happens if something goes wrong somewhere.<br>
Example if email backup has no size written back into DB than if you click on Email Backup Tab the following error occurs<br>
<pre>
[Fri Jun 09 19:44:32.274647 2023] [fcgid:warn] [pi...Only happens if something goes wrong somewhere.<br>
Example if email backup has no size written back into DB than if you click on Email Backup Tab the following error occurs<br>
<pre>
[Fri Jun 09 19:44:32.274647 2023] [fcgid:warn] [pid 1425757:tid 139802577917504] mod_fcgid: stderr: PHP Fatal error: Uncaught TypeError: log(): Argument #1 ($num) must be of type float, string given in /usr/local/ispconfig/interface/lib/classes/functions.inc.php:290
</pre>
Could happens in other (non standard) conditions too.<br><br>
A is_numeric() check or something like this would be useful to make it more failsafe.<br>
<pre>
public function formatBytes($size, $precision = 2) {
if (!is_numeric($size)) {
global $app;
$app->log('Function formatBytes got non nummeric value - check it', LOGLEVEL_ERROR);
return '';
}
$base=log($size)/log(1024);
$suffixes=array('', ' kB', ' MB', ' GB', ' TB');
return round(pow(1024, $base-floor($base)), $precision).$suffixes[floor($base)];
}
</pre>