ISPConfig 3 issueshttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues2024-03-28T16:12:31Zhttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6671Pending queue query does not take active state of servers into account2024-03-28T16:12:31ZTill BrehmPending queue query does not take active state of servers into accounthttps://forum.howtoforge.com/threads/queue-stack.92103/#post-455034https://forum.howtoforge.com/threads/queue-stack.92103/#post-4550343.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6669mail_domain_add() with api - fires mail_mail_domain_edit with event where a "...2024-03-21T18:52:53ZHannesmail_domain_add() with api - fires mail_mail_domain_edit with event where a "new domain" case check is missing on user/spamlist updateOn line 63 of mail_mail_domain_plugin.inc.php the code checks if there is domain name change or owner change for mailbox/spamfilter update.
It checks if oldDataRecord exists but this record exists on mail_domain_add() too (empty but exi...On line 63 of mail_mail_domain_plugin.inc.php the code checks if there is domain name change or owner change for mailbox/spamfilter update.
It checks if oldDataRecord exists but this record exists on mail_domain_add() too (empty but exists) and oldDataRecord\['domain'\] != $domain is true too (because oldDataRecord\['domain'\] is empty/undef) - so the code get executed. I am not sure if it update anything because mostly search for email %@olddomain and olddomain ist empty but think it is better to check if oldDataRecord\['domain'\] exists
```
diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
--- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php
+++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php (date 1711013653411)
@@ -60,7 +60,7 @@
}
//** If the domain name or owner has been changed, change the domain and owner in all mailbox records
- if($page_form->oldDataRecord && ($page_form->oldDataRecord['domain'] != $domain ||
+ if($page_form->oldDataRecord && !empty($page_form->oldDataRecord['domain']) && ($page_form->oldDataRecord['domain'] != $domain ||
(isset($page_form->dataRecord['client_group_id']) && $page_form->oldDataRecord['sys_groupid'] != $page_form->dataRecord['client_group_id']))) {
$app->uses('getconf');
$mail_config = $app->getconf->get_server_config($page_form->dataRecord["server_id"], 'mail');
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6667Bug in mail_mail_domain_plugin function mail_mail_domain_edit spamfilter upda...2024-03-21T18:40:37ZHannesBug in mail_mail_domain_plugin function mail_mail_domain_edit spamfilter update iterate over column insteat rowsIn the function mail_mail_domain_edit at spamfilter update - the code iterate over the columns of queryOneRecord instead of the rows of queryAllRecords
This result in wrong spamfilter settings.
(I got a tip about this bug from another ...In the function mail_mail_domain_edit at spamfilter update - the code iterate over the columns of queryOneRecord instead of the rows of queryAllRecords
This result in wrong spamfilter settings.
(I got a tip about this bug from another user who found it at doing domain update over api )
```
diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
--- a/interface/lib/plugins/mail_mail_domain_plugin.inc.php
+++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php (date 1699374995000)
@@ -255,7 +255,7 @@
// If domain changes, update spamfilter_users
// and fire spamfilter_wblist_update events so rspamd files are rewritten
if ($old_domain != $domain) {
- $tmp_users = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email LIKE ?", '%@' . $old_domain);
+ $tmp_users = $app->db->queryAllRecords("SELECT id,fullname FROM spamfilter_users WHERE email LIKE ?", '%@' . $old_domain);
if(is_array($tmp_users)) {
foreach ($tmp_users as $tmp_old) {
$tmp_new = $app->db->queryOneRecord("SELECT id,fullname FROM spamfilter_users WHERE email = ?", '@' . $domain);
```3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6660Wrong colspan in two list views2024-03-07T20:53:11ZMichaelWrong colspan in two list viewsAffected by this are server_list.htm and backup_stats_list.htm:
![firefox_VhWLOyLO7a](/uploads/415359870c34cadc393f0b1818052e10/firefox_VhWLOyLO7a.png)Affected by this are server_list.htm and backup_stats_list.htm:
![firefox_VhWLOyLO7a](/uploads/415359870c34cadc393f0b1818052e10/firefox_VhWLOyLO7a.png)3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6658The spamfilter of all users (that used it) is rewritten although only the pol...2024-03-28T18:23:06ZHannesThe spamfilter of all users (that used it) is rewritten although only the policy name has been changed## Summary
The spamfilter is rewritten although only the policy name has been changed.
Is not a big problem at all but if there are a lot of users than the system rewrites a lot of config files.
## Steps to reproduce
1. change only t...## Summary
The spamfilter is rewritten although only the policy name has been changed.
Is not a big problem at all but if there are a lot of users than the system rewrites a lot of config files.
## Steps to reproduce
1. change only the name of a spamfilter policy than all spamfilter users of this filter get new config
## Correct behaviour
don't rewrite the spamfilter config of every user of this spamfilter policy if only policy_name got changed.
I don't think the policy_name is used anywhere on the server side - only in the interface.
## Environment
Server OS + version: (Ubu 22.04) \
ISPConfig version: (3.2.11p2)
## Proposed fix
```
diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php
--- a/interface/web/mail/spamfilter_policy_edit.php
+++ b/interface/web/mail/spamfilter_policy_edit.php (date 1709230118549)
@@ -93,7 +93,9 @@
function onAfterUpdate() {
$this->record_has_changed = false;
foreach($this->dataRecord as $key => $val) {
+ if ($key == 'policy_name') { continue; } // Don't trigger update of all spamfilter users if only policy_name is changed
if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) {
// Record has changed
$this->record_has_changed = true;
}
```
i ll send a MRhttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6657Active state in DNS DMARC editor not shown correctly2024-02-29T20:46:30ZHairyActive state in DNS DMARC editor not shown correctly## Summary
There are at least three places where the active status of the DNS DMARC record can be viewed or set.
Two places seem to work, while the third does not work.
1) DNS->Zones->example.com->Records
The first interface lets you vi...## Summary
There are at least three places where the active status of the DNS DMARC record can be viewed or set.
Two places seem to work, while the third does not work.
1) DNS->Zones->example.com->Records
The first interface lets you view the active status, but not change the active status of the DMARC record.
The first interface works correctly.
2) DNS->Zones->example.com->Records->RAW TXT Edit
The second interface lets you view and set the active status of the DMARC record.
The second interface works correctly.
3) DNS->Zones->example.com->DMARC Button Edit
The third interface lets you view and set the active status of the DMARC record.
The third interface does not work correctly.
The third interface will always say that the DMARC record is inactive (not checked), no matter what the actual active status of the DMARC record really is.
If you save the record using the third interface, the record will be saved with whichever active or inactive option you selected.
However, when the record is saved, the page is refreshed and it will still say that the record is inactive (unchecked), no matter what the true active status of the DMARC record really is.
## Proposed fix
I tried to fix this by editing the following files:
dns/form/dns_dmarc.tform.php
dns/dns_dmarc_edit.php
There is some commented code in the dns/dns_dmarc_edit.php file which makes me think that someone else has already tried to fix this issue but was also unsuccesful.
Maybe that's why this bug has existed for many many many years.
Hopefully someone else who knows the code better than I can look at it and easily fix this bug.
I look forward to seeing the fix so that I can learn the ISPC code a little bettter.
Commented code in dns/dns_dmarc_edit.php file
```
//if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED"); else $app->tpl->setVar("active", "UNCHECKED");
```
## Environment
ISPConfig 3.2.11p2
Debian 11
## Related log entries
issue-fix-dmarc-ui3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6656Spamfilter white/blacklist entries can not be added by the client2024-03-28T18:17:17ZTill BrehmSpamfilter white/blacklist entries can not be added by the clienthttps://forum.howtoforge.com/threads/filters.91847/https://forum.howtoforge.com/threads/filters.91847/3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6654Rspamd R_DUMMY Symbol is missing on some systems2024-03-29T11:21:00ZTill BrehmRspamd R_DUMMY Symbol is missing on some systemshttps://forum.howtoforge.com/threads/rspamd-whitelist.84552/
https://forum.howtoforge.com/threads/spamfilter-blacklist-does-not-work.91946/https://forum.howtoforge.com/threads/rspamd-whitelist.84552/
https://forum.howtoforge.com/threads/spamfilter-blacklist-does-not-work.91946/3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6653Disable message function does not work2024-02-26T11:31:55ZHairyDisable message function does not work## Summary
ISPConfig ALMOST allows you to disable showing the message function, effectively disabling support messages.
Navigation to the setting:
System->Main config->Misc->Show message function in help module
After you disable showing...## Summary
ISPConfig ALMOST allows you to disable showing the message function, effectively disabling support messages.
Navigation to the setting:
System->Main config->Misc->Show message function in help module
After you disable showing the message function, ISPConfig still shows the message function to resellers and clients.
When the admin navigates to the Help tab,
In the right view the ISPConfig version is shown.
In the left navigation pane there is no longer an option for message functions.
When the reseller or client navigates to the Help tab,
In the right view the message function is still shown.
In the left navigation pane there is no longer an option for message functions.
## Proposed fix
I can fix this by showing the ISPConfig version in the default admin, reseller and client views by editing the files:
help/version.php
help/lib/module.conf.php
## Secondary issue
This brings us to a secondary issue.
A previous developer considered the ISPConfig version top secret information that should be kept secret from everyone except the admin.
If anyone can give a rational explanation why the version number should be kept top secret from everyone, please let me know so I can change my fix.
## Related log entries
issue-fix-message-function-disablinghttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6650rspamd worker-controller type attribute2024-03-21T18:32:25ZPyte Crspamd worker-controller type attributeHi,
in the default installation of ISPConfig the file /etc/rspamd/local.d/worker-controller.inc contains the following lines:
```
# Included from top-level .conf file
type = "controller";
count = 1;
password = "{REDACTED}";
secure_ip =...Hi,
in the default installation of ISPConfig the file /etc/rspamd/local.d/worker-controller.inc contains the following lines:
```
# Included from top-level .conf file
type = "controller";
count = 1;
password = "{REDACTED}";
secure_ip = "127.0.0.1";
secure_ip = "::1";
static_dir = "${WWWDIR}";
```
which results in the following error message in the rspamd logs and while running rspamadm commands:
`unkown worker attribute: type; worker type: controller`
According to the official documentation of rspamd there is no attribute `type` for controller configuration and we should remove that line.
See https://rspamd.com/doc/workers/controller.html for all available attributes.3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6644CAA Record *.domain.tld. can not be saved2024-02-09T16:27:08ZTill BrehmCAA Record *.domain.tld. can not be savedCAA Record *.domain.tld. can not be saved.CAA Record *.domain.tld. can not be saved.3.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6643rspamd policy per mailbox wrongly removed on mailuser update2024-02-09T16:27:06ZLucarspamd policy per mailbox wrongly removed on mailuser update## Summary
If you update a mailbox from ispconfig interface, without change the spamfilter policy, the rspamd per-user configuration is removed
## Steps to reproduce
1. install a server default with autoinstaller (debian 11/12) with rsp...## Summary
If you update a mailbox from ispconfig interface, without change the spamfilter policy, the rspamd per-user configuration is removed
## Steps to reproduce
1. install a server default with autoinstaller (debian 11/12) with rspamd as mailfilter
2. create a mailbox
3. set to this mailbox a spamfilter policy (example normal)
4. save
5. you will see the file rspamd/local.d/{user}.conf file written
6. then enter again on the mailbox from ispconfig
7. try to update the quota with a different value, without change the spamfilter policy
8. save
9. now you will see the file rspamd/local.d/{user}.conf removed
## Correct behaviour
The correct behaviour is that the mailbox will be updated, without the rspamd policy custom of the mail user removed
## Environment
Server OS + version: (Debian 11/12)
ISPConfig version: latest stable
Software version of the related software: everything to the latest stable
Output of the command: n/a
## Proposed fix
**This is NOT** a proposted fix, but some information that hope could be useful.
Basically I have found that when a mailbox user is updated from ispconfig without changing the spamfilter policy, on the file
`/usr/local/ispconfig/server/plugins-available/rspamd_plugin.inc.php at the row 285` the variable `$data['new']['policy_id']` is always empty so `intval($data['new']['policy_id'])` is always `0` and the `if` is entered and the file removed:
```
if((!$this->isValidEmail($app->functions->idn_encode($email_address))) || !isset($data['new']['policy_id']) || intval($data['new']['policy_id']) == 0 && $type == 'spamfilter_user') {
if(is_file($settings_file)) {
unlink($settings_file);
}
} else {
[...]
```
In my testing server in order to avoid that i did something like this:
```
if ((!$this->isValidEmail($app->functions->idn_encode($email_address)))){
[...]
```
but i known that **THIS IS NOT THE SOLUTION** (due i did only on test, for debug purpose). Due that is really needed to understand: or why the `$data['new']['policy_id']` is empty, or if it is that correct, accordingly change the original if to manage them properly.
If you can reproduce this, i think that a patch is urgently required because as you can understand is very easy to have misleading anti spam settings for certain users.3.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6642Mail user filter search hangs with javascript errors in browser2024-02-09T16:27:14ZBas MevissenMail user filter search hangs with javascript errors in browser## Summary
When logging in to ISPConfig as mail user, searching the e-mail filter list causes a hang with browser javascript errors. It will not recover by itself and a refresh (F5) is required to gain control again. When logged in with ...## Summary
When logging in to ISPConfig as mail user, searching the e-mail filter list causes a hang with browser javascript errors. It will not recover by itself and a refresh (F5) is required to gain control again. When logged in with administrative or client user account, it does not happen. However, that seems to be a different page.
Tested with on Ubuntu 22.04.3 LTS (Jammy Jellyfish)) ISPConfig 3.2.11p1, issue was also present with Ubuntu 14.04 LT ESM.
See https://forum.howtoforge.com/threads/mailbox-e-mail-filter-search-hangs-when-logged-in-as-mailuser.91734/ for discussion that lead to this issue report.
## Steps to reproduce
1. Login to ISPConfig with mail user account
2. Go to "Email Filters"
3. Type something in search box and press search symbol
## Correct behaviour
A search result should be shown
## Environment
```
Server OS + version: Ubuntu 22.04.3 LTS (Jammy Jellyfish))
ISPConfig version: 3.2.11p1
Apache version: 2.4.52
PHP version: 8.1.2-1ubuntu2.14
```
## References
https://forum.howtoforge.com/threads/mailbox-e-mail-filter-search-hangs-when-logged-in-as-mailuser.91734/
## Screenshots
![upload_2024-1-18_18-18-42](/uploads/ed90b6cd5397a3699007d022a725ce47/upload_2024-1-18_18-18-42.png)
![upload_2024-1-19_12-18-30](/uploads/ee9eb0468882c00b622997daac5d1af0/upload_2024-1-19_12-18-30.png)
![upload_2024-1-19_12-19-7](/uploads/372839cd9da5f0e253420d3d2be87d9e/upload_2024-1-19_12-19-7.png)
## Related log entries
Nothing found unfortunately3.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6641Multiserver sync issues with some older systems2024-02-09T16:27:09ZTill BrehmMultiserver sync issues with some older systems
https://forum.howtoforge.com/threads/ispc-add-new-serwer.91807/#post-453676
https://forum.howtoforge.com/threads/problems-after-new-installation-on-multi-server-sql-errors.91212/#post-450144
https://forum.howtoforge.com/threads/ispc-add-new-serwer.91807/#post-453676
https://forum.howtoforge.com/threads/problems-after-new-installation-on-multi-server-sql-errors.91212/#post-4501443.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6640DKIM key not generated for IDN domain2024-02-09T16:27:13ZTill BrehmDKIM key not generated for IDN domainhttps://forum.howtoforge.com/threads/no-dkim-key-in-idn-domains.90826/#post-453655https://forum.howtoforge.com/threads/no-dkim-key-in-idn-domains.90826/#post-4536553.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6635DNS import confuses ID and name2024-02-01T11:05:10ZHelmoDNS import confuses ID and nameWhen using the domains module I could not use the Zone File Import feature.
It kept coming back with 'This zone is not allowed for this account.' even though I'm logged in as admin and the client and domains_domain match.
I found that ...When using the domains module I could not use the Zone File Import feature.
It kept coming back with 'This zone is not allowed for this account.' even though I'm logged in as admin and the client and domains_domain match.
I found that the form posts an ID(int), and then later on the code expects it to be a name(string). When NOT using the domains module the form submits the domainname.3.2.12HelmoHelmohttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6634Zone file import failes to show errors2024-02-01T11:04:18ZHelmoZone file import failes to show errorsI ran into an issue with the DNS zone import ... and was wondering why I saw no errors.
After some digging I found that the http request did return html for an error message, it just never got loaded into the DOM.
After debugging furt...I ran into an issue with the DNS zone import ... and was wondering why I saw no errors.
After some digging I found that the http request did return html for an error message, it just never got loaded into the DOM.
After debugging further I found that while submitForm replaces the content in `$('#pageContent')` submitUploadFormdoes it differently and only extracts a few elements (#errorMsg and #OKMsg)
I'll add a MR to restore the #errorMsg.
![image.png](/uploads/596ec47a12e37060931d400f8e29bdc0/image.png)3.2.12HelmoHelmohttps://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6633Code Error - Jailkit Update on every cron change2024-02-09T16:27:11ZWHOCode Error - Jailkit Update on every cron change## Summary
Every time a cron is edited or added the jailkit update is triggered.
## Steps to reproduce
Edit a cron of a website that recently received a jailkit update.
=> The Update will be triggered every time
## Correct behaviour
On...## Summary
Every time a cron is edited or added the jailkit update is triggered.
## Steps to reproduce
Edit a cron of a website that recently received a jailkit update.
=> The Update will be triggered every time
## Correct behaviour
Only Update if the check hash changed.
## Proposed fix
File: /usr/local/ispconfig/server/plugins-enabled/cron_jailkit_plugin.inc.php
Function: function _setup_jailkit_chroot
Line 232: global $app;
New Line: global $app, $conf;
Line: 296: if ($update_hash == $parent_domain['last_jailkit_hash']) {
New Line: if ($update_hash == $this->parent_domain['last_jailkit_hash']) {3.2.11p2https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6631E-Mail address with comma in recipient name2024-01-23T16:54:53Zteuto.netE-Mail address with comma in recipient name## Summary
<!-- What is happening and what is wrong with that? -->
## Steps to reproduce
1. Create a user with "," in there name
2. Try to send a email to that user, for example with "Password reset"
The E-Mail to header will split at ...## Summary
<!-- What is happening and what is wrong with that? -->
## Steps to reproduce
1. Create a user with "," in there name
2. Try to send a email to that user, for example with "Password reset"
The E-Mail to header will split at each comma. The email is submitted to the user but also many other addresses.
## Correct behaviour
<!-- What should happen instead? -->
Send an email to the user with correct recipient.
## Environment
Ubuntu 20.04 with postfix and a relay for email transmission.
## Proposed fix
I will create a merge request3.2.12https://git.ispconfig.org/ispconfig/ispconfig3/-/issues/6629PHP warning in bind_plugin.inc.php on line 4052024-01-18T06:52:59ZHelmoPHP warning in bind_plugin.inc.php on line 405I noticed this one in the logs while updating a dns zone:
\`PHP Warning: Trying to access array offset on value of type null in /usr/local/ispconfig/server/plugins-available/bind_plugin.inc.php on line 405\`I noticed this one in the logs while updating a dns zone:
\`PHP Warning: Trying to access array offset on value of type null in /usr/local/ispconfig/server/plugins-available/bind_plugin.inc.php on line 405\`HelmoHelmo