glpi-project / glpi

GLPI is a Free Asset and IT Management Software package, Data center management, ITIL Service Desk, licenses tracking and software auditing.
https://glpi-project.org
GNU General Public License v3.0
4.18k stars 1.28k forks source link

Requester receives follow-up emails about its own follow-ups #16813

Open gonzaleztroyano opened 6 months ago

gonzaleztroyano commented 6 months ago

Code of Conduct

Is there an existing issue for this?

Version

10.0.14 (last)

Bug description

Problem

When a requester adds a follow-up by email (just replying to a previous notification), this same requester receives a follow-up email with its follow-up content.

Related info

Similar issues have been discussed on #15362 (this is not the exact case, as it is the REQUESTER who receives the notification, not the agent) and on this forum topic: Followup author is receiving email notification of their own followup.

As commented on the forum by clutch69rs, removing the requester from the Add Followup Notification is not applicable: the requester has to receive the notifications when an agent add a followup on its ticket.

It is kind of a blocking problem for some of us, as mimix comments: I am currently encountering the same problem and this behavior is absolutely an obstacle to the adoption of GLPI within our company.

Relevant log output

Not applicable.

Page URL

No response

Steps To reproduce

  1. A ticket is created. Indifferent the way or direction.
  2. Requester (external, not in GLPI users DB) replies to a previous notification email, adding a comment.
  3. When GLPI processes the incoming e-mail, adds the content to ticket AND fires the Add Followupnotification.
  4. This notification is sent to the requester (and others).
  5. The requester feels confused as in 1 minute from its reply, receives a email with the same content.

It generates so much noise and it is uncommon for any other helpdesk software.

Your GLPI setup information

Install info ``` GLPI 10.0.14 (/glpi => /var/www/html/glpi) Installation mode: TARBALL Current language:es_ES ```
Server ``` Operating system: Linux REDACTED-inventory 5.4.0-173-generic #​191-Ubuntu SMP Fri Feb 2 13:55:07 UTC 2024 x86_64 PHP 7.4.33 apache2handler (Core, FFI, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, apache2handler, bz2, calendar, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, intl, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, pdo_mysql, posix, readline, session, shmop, sockets, sodium, standard, sysvmsg, sysvsem, sysvshm, tokenizer, xml, xmlreader, xmlwriter, xsl, zip, zlib) Setup: max_execution_time="30" memory_limit="128M" post_max_size="8M" safe_mode="" session.save_handler="files" upload_max_filesize="2M" disable_functions="pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare," Software: Apache/2.4.41 (Ubuntu) (Apache/2.4.41 (Ubuntu) Server at REDACTED Port 80 ) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0 Server Software: Ubuntu 20.04 Server Version: 10.3.39-MariaDB-0ubuntu0.20.04.2 Server SQL Mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Parameters: glpi@localhost/glpi Host info: Localhost via UNIX socket PHP version (7.4.33) is supported.PHP version (7.4.33) is supported. Sessions configuration is OK.Sessions configuration is OK. Allocated memory is sufficient.Allocated memory is sufficient. mysqli extension is installed.mysqli extension is installed. Following extensions are installed: dom, fileinfo, filter, libxml, json, simplexml, xmlreader, xmlwriter.Following extensions are installed: dom, fileinfo, filter, libxml, json, simplexml, xmlreader, xmlwriter. curl extension is installed.curl extension is installed. gd extension is installed.gd extension is installed. intl extension is installed.intl extension is installed. zlib extension is installed.zlib extension is installed. The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present. Database engine version (10.3.39) is supported.Database engine version (10.3.39) is supported. No files from previous GLPI version detected.No files from previous GLPI version detected. The log file has been created successfully.The log file has been created successfully. Write access to /var/www/html/glpi/files/_cache has been validated. Write access to /var/www/html/glpi/files/_cron has been validated. Write access to /var/www/html/glpi/files has been validated. Write access to /var/www/html/glpi/files/_dumps has been validated. Write access to /var/www/html/glpi/files/_graphs has been validated. Write access to /var/www/html/glpi/files/_lock has been validated. Write access to /var/www/html/glpi/files/_pictures has been validated. Write access to /var/www/html/glpi/files/_plugins has been validated. Write access to /var/www/html/glpi/files/_rss has been validated. Write access to /var/www/html/glpi/files/_sessions has been validated. Write access to /var/www/html/glpi/files/_tmp has been validated. Write access to /var/www/html/glpi/files/_uploads has been validated.Write access to /var/www/html/glpi/files/_cache has been validated. Write access to /var/www/html/glpi/files/_cron has been validated. Write access to /var/www/html/glpi/files has been validated. Write access to /var/www/html/glpi/files/_dumps has been validated. Write access to /var/www/html/glpi/files/_graphs has been validated. Write access to /var/www/html/glpi/files/_lock has been validated. Write access to /var/www/html/glpi/files/_pictures has been validated. Write access to /var/www/html/glpi/files/_plugins has been validated. Write access to /var/www/html/glpi/files/_rss has been validated. Write access to /var/www/html/glpi/files/_sessions has been validated. Write access to /var/www/html/glpi/files/_tmp has been validated. Write access to /var/www/html/glpi/files/_uploads has been validated. PHP 7.4 is no longer maintained by its community. Even if GLPI still supports this PHP version, an upgrade to a more recent PHP version is recommended. Indeed, this PHP version may contain unpatched security vulnerabilities.PHP 7.4 is no longer maintained by its community. Even if GLPI still supports this PHP version, an upgrade to a more recent PHP version is recommended. Indeed, this PHP version may contain unpatched security vulnerabilities. Web server root directory configuration is not safe as it permits access to non-public files. See installation documentation for more details.Web server root directory configuration is not safe as it permits access to non-public files. See installation documentation for more details. The following directories should be placed outside "/var/www/html/glpi": ‣ "/var/www/html/glpi/files" ("GLPI_VAR_DIR") You can ignore this suggestion if your web server root directory is "/var/www/html/glpi/public".The following directories should be placed outside "/var/www/html/glpi": ‣ "/var/www/html/glpi/files" ("GLPI_VAR_DIR") You can ignore this suggestion if your web server root directory is "/var/www/html/glpi/public". Sessions configuration is secured.Sessions configuration is secured. OS and PHP are relying on 64 bits integers.OS and PHP are relying on 64 bits integers. exif extension is installed.exif extension is installed. ldap extension is not present.ldap extension is not present. openssl extension is installed.openssl extension is installed. Following extensions are installed: bz2, Phar, zip.Following extensions are installed: bz2, Phar, zip. Zend OPcache extension is installed.Zend OPcache extension is installed. Following extensions are installed: ctype, iconv, mbstring, sodium.Following extensions are installed: ctype, iconv, mbstring, sodium. Write access to /var/www/html/glpi/marketplace has been validated.Write access to /var/www/html/glpi/marketplace has been validated. Timezones seems loaded in database.Timezones seems loaded in database. ```
GLPI constants ``` GLPI_ROOT: "/var/www/html/glpi" GLPI_CONFIG_DIR: "/var/www/html/glpi/config" GLPI_VAR_DIR: "/var/www/html/glpi/files" GLPI_MARKETPLACE_DIR: "/var/www/html/glpi/marketplace" GLPI_USE_CSRF_CHECK: "1" GLPI_CSRF_EXPIRES: "7200" GLPI_CSRF_MAX_TOKENS: "100" GLPI_USE_IDOR_CHECK: "1" GLPI_IDOR_EXPIRES: "7200" GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false GLPI_SERVERSIDE_URL_ALLOWLIST: ["/^(https?|feed):\\/\\/[^@:]+(\\/.*)?$/"] GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org" GLPI_INSTALL_MODE: "TARBALL" GLPI_NETWORK_MAIL: "glpi@teclib.com" GLPI_NETWORK_SERVICES: "https://services.glpi-network.com" GLPI_MARKETPLACE_ALLOW_OVERRIDE: true GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true GLPI_USER_AGENT_EXTRA_COMMENTS: "" GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1" GLPI_AJAX_DASHBOARD: "1" GLPI_CALDAV_IMPORT_STATE: 0 GLPI_DEMO_MODE: "0" GLPI_CENTRAL_WARNINGS: "1" GLPI_TEXT_MAXSIZE: "4000" GLPI_DOC_DIR: "/var/www/html/glpi/files" GLPI_CACHE_DIR: "/var/www/html/glpi/files/_cache" GLPI_CRON_DIR: "/var/www/html/glpi/files/_cron" GLPI_DUMP_DIR: "/var/www/html/glpi/files/_dumps" GLPI_GRAPH_DIR: "/var/www/html/glpi/files/_graphs" GLPI_LOCAL_I18N_DIR: "/var/www/html/glpi/files/_locales" GLPI_LOCK_DIR: "/var/www/html/glpi/files/_lock" GLPI_LOG_DIR: "/var/www/html/glpi/files/_log" GLPI_PICTURE_DIR: "/var/www/html/glpi/files/_pictures" GLPI_PLUGIN_DOC_DIR: "/var/www/html/glpi/files/_plugins" GLPI_RSS_DIR: "/var/www/html/glpi/files/_rss" GLPI_SESSION_DIR: "/var/www/html/glpi/files/_sessions" GLPI_TMP_DIR: "/var/www/html/glpi/files/_tmp" GLPI_UPLOAD_DIR: "/var/www/html/glpi/files/_uploads" GLPI_INVENTORY_DIR: "/var/www/html/glpi/files/_inventories" GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/" GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/" GLPI_I18N_DIR: "/var/www/html/glpi/locales" GLPI_VERSION: "10.0.14" GLPI_SCHEMA_VERSION: "10.0.14@8f13530f7cf0fb07add30ae20013f0374956795b" GLPI_MARKETPLACE_PRERELEASES: false GLPI_MIN_PHP: "7.4.0" GLPI_MAX_PHP: "8.4.0" GLPI_YEAR: "2024" ```
Libraries ``` htmlawed/htmlawed version 1.2.14 in (/var/www/html/glpi/vendor/htmlawed/htmlawed) phpmailer/phpmailer version 6.8.0 in (/var/www/html/glpi/vendor/phpmailer/phpmailer/src) simplepie/simplepie version 1.5.8 in (/var/www/html/glpi/vendor/simplepie/simplepie/library) tecnickcom/tcpdf version 6.6.2 in (/var/www/html/glpi/vendor/tecnickcom/tcpdf) michelf/php-markdown in (/var/www/html/glpi/vendor/michelf/php-markdown/Michelf) true/punycode in (/var/www/html/glpi/vendor/true/punycode/src) iamcal/lib_autolink in (/var/www/html/glpi/vendor/iamcal/lib_autolink) sabre/dav in (/var/www/html/glpi/vendor/sabre/dav/lib/DAV) sabre/http in (/var/www/html/glpi/vendor/sabre/http/lib) sabre/uri in (/var/www/html/glpi/vendor/sabre/uri/lib) sabre/vobject in (/var/www/html/glpi/vendor/sabre/vobject/lib) laminas/laminas-i18n in (/var/www/html/glpi/vendor/laminas/laminas-i18n/src) laminas/laminas-servicemanager in (/var/www/html/glpi/vendor/laminas/laminas-servicemanager/src) monolog/monolog in (/var/www/html/glpi/vendor/monolog/monolog/src/Monolog) sebastian/diff in (/var/www/html/glpi/vendor/sebastian/diff/src) donatj/phpuseragentparser in (/var/www/html/glpi/vendor/donatj/phpuseragentparser/src/UserAgent) elvanto/litemoji in (/var/www/html/glpi/vendor/elvanto/litemoji/src) symfony/console in (/var/www/html/glpi/vendor/symfony/console) scssphp/scssphp in (/var/www/html/glpi/vendor/scssphp/scssphp/src) laminas/laminas-mail in (/var/www/html/glpi/vendor/laminas/laminas-mail/src/Protocol) laminas/laminas-mime in (/var/www/html/glpi/vendor/laminas/laminas-mime/src) rlanvin/php-rrule in (/var/www/html/glpi/vendor/rlanvin/php-rrule/src) ramsey/uuid in (/var/www/html/glpi/vendor/ramsey/uuid/src) psr/log in (/var/www/html/glpi/vendor/psr/log/Psr/Log) psr/simple-cache in (/var/www/html/glpi/vendor/psr/simple-cache/src) psr/cache in (/var/www/html/glpi/vendor/psr/cache/src) league/csv in (/var/www/html/glpi/vendor/league/csv/src) mexitek/phpcolors in (/var/www/html/glpi/vendor/mexitek/phpcolors/src/Mexitek/PHPColors) guzzlehttp/guzzle in (/var/www/html/glpi/vendor/guzzlehttp/guzzle/src) guzzlehttp/psr7 in (/var/www/html/glpi/vendor/guzzlehttp/psr7/src) glpi-project/inventory_format in (/var/www/html/glpi/vendor/glpi-project/inventory_format/lib/php) wapmorgan/unified-archive in (/var/www/html/glpi/vendor/wapmorgan/unified-archive/src) paragonie/sodium_compat in (/var/www/html/glpi/vendor/paragonie/sodium_compat/src) symfony/cache in (/var/www/html/glpi/vendor/symfony/cache) html2text/html2text in (/var/www/html/glpi/vendor/html2text/html2text/src) symfony/css-selector in (/var/www/html/glpi/vendor/symfony/css-selector) symfony/dom-crawler in (/var/www/html/glpi/vendor/symfony/dom-crawler) twig/twig in (/var/www/html/glpi/vendor/twig/twig/src) twig/string-extra in (/var/www/html/glpi/vendor/twig/string-extra) symfony/polyfill-ctype not found symfony/polyfill-iconv not found symfony/polyfill-mbstring not found symfony/polyfill-php80 in (/var/www/html/glpi/vendor/symfony/polyfill-php80) symfony/polyfill-php81 in (/var/www/html/glpi/vendor/symfony/polyfill-php81) symfony/polyfill-php82 in (/var/www/html/glpi/vendor/symfony/polyfill-php82) league/oauth2-client in (/var/www/html/glpi/vendor/league/oauth2-client/src/Provider) league/oauth2-google in (/var/www/html/glpi/vendor/league/oauth2-google/src/Provider) thenetworg/oauth2-azure in (/var/www/html/glpi/vendor/thenetworg/oauth2-azure/src/Provider) ```
SQL replicas ``` Not active ```
Notifications ``` Way of sending emails: SMTP+TLS REDACTED ```
Mails receivers ``` Name: 'glpi_receptorREDACTED' Active: Yes Server: '{REDACTED}REDACTED' Login: 'REDACTED' Password: Yes ```
Plugin list ``` datainjection Name: Data injection Version: 2.13.4 State: Installed / not activated Install Method: Marketplace ocsinventoryng Name: OCS Inventory NG Version: 2.0.4 State: Installed / not activated Install Method: Marketplace ```

Anything else?

Thanks a lot in advance!

berils commented 6 months ago

I can confirm that external client is receiving email notification about own reply. But external client must receive other notifications regarding ticket flow, but not for their own replies.

SteadEXE commented 6 months ago

Just to carify,

@trasher I think my issue is the reverse of this, it occurs when replying to a sent email to GLPI (but likely related).

When you send an email (mail A) to GLPI, you get a reply that your ticket has been created (mail B). If you go in your mail app, and reply to mail A, it will create a new ticket in GLPI with title.

SteadEXE commented 6 months ago

Maybe the solution would be to parse the id from the subject and check if a ticket is still opened with this id, and if the sender is somewhere in requester, observer or technicians? I really don't know.

github-actions[bot] commented 4 months ago

There has been no activity on this issue for some time and therefore it is considered stale and will be closed automatically in 10 days.

If this issue is related to a bug, please try to reproduce on latest release. If the problem persist, feel free to add a comment to revive this issue. If it is related to a new feature, please open a topic to discuss with community about this enhancement on suggestion website.

You may also consider taking a subscription to get professionnal support or contact GLPI editor team directly.

AldarisPale commented 4 months ago

I wonder if https://github.com/glpi-project/glpi/issues/16781 is actually the same problem as this one.

github-actions[bot] commented 1 month ago

There has been no activity on this issue for some time and therefore it is considered stale and will be closed automatically in 10 days.

If this issue is related to a bug, please try to reproduce on latest release. If the problem persist, feel free to add a comment to revive this issue. If it is related to a new feature, please open a topic to discuss with community about this enhancement on suggestion website.

You may also consider taking a subscription to get professionnal support or contact GLPI editor team directly.

cconard96 commented 1 month ago

Doesn't seem like a bug. Anonymous users will use the global setting for "Notifications for my changes" in Setup > General > Default values which defaults to Yes.

pippo571 commented 1 month ago

Hello,

Same issue here in version 10.0.16, this happens with anonymous users as well as with GLPI DB users.

The setting "Notifications for my changes" in Setup > General > Default is set to "No".

If a comment is added in the ticket via the web interface, the author does not receive his own followup but if the comment is added via a mail reply, then the author receives his own followup.