Package: dokuwiki
Version: 0.0.20220731.a-2
Severity: normal

Mails sent to observers of a dokuwiki page are never sent and gfenerate a 
mailing error.

The problem is that various headers are concatenated together into a single 
string.  Since one of them is the Bcc: header, and there is no To: header, the 
emai lhas no recipieents and fails.

This is an example of bad headers as generated by dokuwiki/inc/Mailer.class.php:

================================================================
To: 
Subject: [pot wiki] page changed: scuole:start
X-Mailer: DokuWiki
 X-Dokuwiki-User: pot
 X-Dokuwiki-Title: pot wiki
 X-Dokuwiki-Server: wiki.potorti.it
 X-Auto-Response-Suppress: OOF
 List-Id: pot wiki <wiki.potorti.it>
 Date: Fri, 06 Sep 2024 11:46:32 +0000
 Bcc: p...@potorti.it
 List-Unsubscribe: <http://wiki.potorti.it/scuole/start?do=subscribe>
 Message-Id: <scuolestartrev1725623...@wiki.potorti.it>
 In-Reply-To: <scuolestartrev1725623...@wiki.potorti.it>
 From: p...@potorti.it
 MIME-Version: 1.0
 Content-Type: multipart/alternative;
   boundary="__________564a603fe36b0f7816535385a8d475f2XX"
Message-Id: <e1smxq8-000000095qs-0...@tucano.isti.cnr.it>
From: www-data <www-d...@tucano.isti.cnr.it>
Date: Fri, 06 Sep 2024 13:46:32 +0200
================================================================

As you can see, several headers are catenated together into a single X-Mailer 
header and are thus ignored by sendmail.  I suspect that the problem lies into 
the prepareHeaders function, but I was not able to change it so that it works.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (990, 'testing'), (101, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.10.4-amd64 (SMP w/24 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages dokuwiki depends on:
ii  debconf [debconf-2.0]       1.5.87
ii  javascript-common           11+nmu1
ii  libjs-jquery                3.6.1+dfsg+~3.5.14-1
ii  libjs-jquery-cookie         12-4
ii  libjs-jquery-ui             1.13.2+dfsg-1
ii  libphp-simplepie            1.5.8+dfsg-1
ii  perl                        5.38.2-5
ii  php                         2:8.2+93+nmu1
ii  php-geshi                   1.0.9.1-1
ii  php-phpseclib               2.0.47-2
ii  php-random-compat           2.0.21-1
ii  php-seclib [php-phpseclib]  1.0.23-2
ii  php-xml                     2:8.2+93+nmu1
ii  php8.2 [php]                8.2.23-1
ii  php8.2-xml [php-xml]        8.2.23-1
ii  ucf                         3.0043+nmu1

Versions of packages dokuwiki recommends:
ii  imagemagick                      8:6.9.13.12+dfsg1-1
ii  imagemagick-6.q16 [imagemagick]  8:6.9.13.12+dfsg1-1
ii  php-gd                           2:8.2+93+nmu1
ii  php-ldap                         2:8.2+93+nmu1
ii  php-mysql                        2:8.2+93+nmu1
ii  php-pgsql                        2:8.2+93+nmu1
ii  php8.2-cli [php-cli]             8.2.23-1
ii  php8.2-gd [php-gd]               8.2.23-1
ii  php8.2-ldap [php-ldap]           8.2.23-1
ii  php8.2-pgsql [php-pgsql]         8.2.23-1
ii  wget                             1.24.5-2+b1

Versions of packages dokuwiki suggests:
ii  libapache2-mod-xsendfile  0.12-2+b1

-- Configuration Files:
/etc/dokuwiki/dokuwiki.php changed:
<?php
/**
 * This is DokuWiki's Main Configuration file
 *
 * All the default values are kept here, you should not modify it but use
 * a local.php file instead to override the settings from here.
 *
 * This is a piece of PHP code so PHP syntax applies!
 *
 * For help with the configuration and a more detailed explanation of the 
various options
 * see https://www.dokuwiki.org/config
 */
/* Basic Settings */
$conf['title']       = 'Debian DokuWiki'; //what to show in the title
$conf['start']       = 'start';           //name of start page
$conf['lang']        = 'en';              //your language
$conf['template']    = 'dokuwiki';         //see lib/tpl directory
$conf['tagline']     = '';                //tagline in header (if template 
supports it)
$conf['sidebar']     = 'sidebar';         //name of sidebar in root namespace 
(if template supports it)
$conf['license']     = 'cc-by-nc-sa';     //see conf/license.php
$conf['savedir']     = '/var/lib/dokuwiki/data'; //where to store all the files
$conf['basedir']     = '';                //absolute dir from serveroot - blank 
for autodetection
$conf['baseurl']     = '';                //URL to server including protocol - 
blank for autodetect
$conf['cookiedir']   = '';                //path to use in cookies - blank for 
basedir
$conf['dmode']       = 0755;              //set directory creation mode
$conf['fmode']       = 0644;              //set file creation mode
$conf['allowdebug']  = 0;                 //allow debug output, enable if 
needed 0|1
/* Display Settings */
$conf['recent']      = 20;                //how many entries to show in recent
$conf['recent_days'] = 7;                 //How many days of recent changes to 
keep. (days)
$conf['breadcrumbs'] = 10;                //how many recent visited pages to 
show
$conf['youarehere']  = 0;                 //show "You are here" navigation? 0|1
$conf['fullpath']    = 0;                 //show full path of the document or 
relative to datadir only? 0|1
$conf['typography']  = 1;                 //smartquote conversion 0=off, 
1=doublequotes, 2=all quotes
$conf['dformat']     = '%Y/%m/%d %H:%M';  //dateformat accepted by PHPs 
strftime() function
$conf['signature']   = ' --- //[[@MAIL@|@NAME@]] @DATE@//'; //signature see 
wiki page for details
$conf['showuseras']  = 'loginname';       // 'loginname' users login name
                                          // 'username' users full name
                                          // 'email' e-mail address (will be 
obfuscated as per mailguard)
                                          // 'email_link' e-mail address as a 
mailto: link (obfuscated)
$conf['toptoclevel'] = 1;                 //Level starting with and below to 
include in AutoTOC (max. 5)
$conf['tocminheads'] = 3;                 //Minimum amount of headlines that 
determines if a TOC is built
$conf['maxtoclevel'] = 3;                 //Up to which level include into 
AutoTOC (max. 5)
$conf['maxseclevel'] = 3;                 //Up to which level create editable 
sections (max. 5)
$conf['camelcase']   = 0;                 //Use CamelCase for linking? (I don't 
like it) 0|1
$conf['deaccent']    = 1;                 //deaccented chars in pagenames (1) 
or romanize (2) or keep (0)?
$conf['useheading']  = 0;                 //use the first heading in a page as 
its name
$conf['sneaky_index']= 0;                 //check for namespace read permission 
in index view (0|1) (1 might cause unexpected behavior)
$conf['hidepages']   = '';                //Regexp for pages to be skipped from 
RSS, Search and Recent Changes
/* Authentication Settings */
$conf['useacl']      = 0;                //Use Access Control Lists to restrict 
access?
$conf['autopasswd']  = 1;                //autogenerate passwords and email 
them to user
$conf['authtype']    = 'authplain';      //which authentication backend should 
be used
$conf['passcrypt']   = 'bcrypt';           //Used crypt method 
(smd5,md5,sha1,ssha,crypt,mysql,my411,bcrypt)
$conf['defaultgroup']= 'user';           //Default groups new Users are added to
$conf['superuser']   = '!!not set!!';    //The admin can be user or @group or 
comma separated list user1,@group1,user2
$conf['manager']     = '!!not set!!';    //The manager can be user or @group or 
comma separated list user1,@group1,user2
$conf['profileconfirm'] = 1;             //Require current password to confirm 
changes to user profile
$conf['rememberme'] = 1;                 //Enable/disable remember me on login
$conf['disableactions'] = '';            //comma separated list of actions to 
disable
$conf['auth_security_timeout'] = 900;    //time (seconds) auth data is 
considered valid, set to 0 to recheck on every page view
$conf['securecookie'] = 1;               //never send HTTPS cookies via HTTP
$conf['remote']      = 0;                //Enable/disable remote interfaces
$conf['remoteuser']  = '!!not set!!';    //user/groups that have access to 
remote interface (comma separated). leave empty to allow all users
$conf['remotecors']  = '';               //enable Cross-Origin Resource Sharing 
(CORS) for the remote interfaces. Asterisk (*) to allow all origins. leave 
empty to deny.
/* Antispam Features */
$conf['usewordblock']= 1;                //block spam based on words? 0|1
$conf['relnofollow'] = 1;                //use rel="ugc nofollow" for external 
links?
$conf['indexdelay']  = 60*60*24*5;       //allow indexing after this time 
(seconds) default is 5 days
$conf['mailguard']   = 'hex';            //obfuscate email addresses against 
spam harvesters?
                                         //valid entries are:
                                         //  'visible' - replace @ with [at], . 
with [dot] and - with [dash]
                                         //  'hex'     - use hex entities to 
encode the mail address
                                         //  'none'    - do not obfuscate 
addresses
$conf['iexssprotect']= 1;                // check for JavaScript and HTML in 
uploaded files 0|1
/* Editing Settings */
$conf['usedraft']    = 1;                //automatically save a draft while 
editing (0|1)
$conf['htmlok']      = 0;                //may raw HTML be embedded? This may 
break layout and XHTML validity 0|1
$conf['phpok']       = 0;                //may PHP code be embedded? Never do 
this on the internet! 0|1
$conf['locktime']    = 15*60;            //maximum age for lockfiles (defaults 
to 15 minutes)
$conf['cachetime']   = 60*60*24;         //maximum age for cachefile in seconds 
(defaults to a day)
/* Link Settings */
// Set target to use when creating links - leave empty for same window
$conf['target']['wiki']      = '';
$conf['target']['interwiki'] = '';
$conf['target']['extern']    = '';
$conf['target']['media']     = '';
$conf['target']['windows']   = '';
/* Media Settings */
$conf['mediarevisions'] = 1;             //enable/disable media revisions
$conf['refcheck']    = 1;                //check for references before deleting 
media files
$conf['gdlib']       = 2;                //the GDlib version (0, 1 or 2) 2 
tries to autodetect
$conf['im_convert']  = '';               //path to ImageMagicks convert (will 
be used instead of GD)
$conf['jpg_quality'] = '70';             //quality of compression when scaling 
jpg images (0-100)
$conf['fetchsize']   = 0;                //maximum size (bytes) fetch.php may 
download from extern, disabled by default
/* Notification Settings */
$conf['subscribers'] = 0;                //enable change notice subscription 
support
$conf['subscribe_time'] = 24*60*60;      //Time after which digests / lists are 
sent (in sec, default 1 day)
                                         //Should be smaller than the time 
specified in recent_days
$conf['notify']      = '';               //send change info to this email 
(leave blank for nobody)
$conf['registernotify'] = '';            //send info about newly registered 
users to this email (leave blank for nobody)
$conf['mailfrom']    = '';               //use this email when sending mails
$conf['mailreturnpath']    = '';         //use this email as returnpath for 
bounce mails
$conf['mailprefix']  = '';               //use this as prefix of outgoing mails
$conf['htmlmail']    = 1;                //send HTML multipart mails
$conf['dontlog'] = 'debug';              //logging facilites that should be 
disabled
/* Syndication Settings */
$conf['sitemap']     = 0;                //Create a google sitemap? How often? 
In days.
$conf['rss_type']    = 'rss1';           //type of RSS feed to provide, by 
default:
                                         //  'rss'  - RSS 0.91
                                         //  'rss1' - RSS 1.0
                                         //  'rss2' - RSS 2.0
                                         //  'atom' - Atom 0.3
                                         //  'atom1' - Atom 1.0
$conf['rss_linkto'] = 'diff';            //what page RSS entries link to:
                                         //  'diff'    - page showing revision 
differences
                                         //  'page'    - the revised page itself
                                         //  'rev'     - page showing all 
revisions
                                         //  'current' - most recent revision 
of page
$conf['rss_content'] = 'abstract';       //what to put in the items by default?
                                         //  'abstract' - plain text, first 
paragraph or so
                                         //  'diff'     - plain text unified 
diff wrapped in <pre> tags
                                         //  'htmldiff' - diff as HTML table
                                         //  'html'     - the full page 
rendered in XHTML
$conf['rss_media']   = 'both';           //what should be listed?
                                         //  'both'     - page and media changes
                                         //  'pages'    - page changes only
                                         //  'media'    - media changes only
$conf['rss_update'] = 5*60;              //Update the RSS feed every n seconds 
(defaults to 5 minutes)
$conf['rss_show_summary'] = 1;           //Add revision summary to title? 0|1
$conf['rss_show_deleted'] = 1;           //Show deleted items 0|1
/* Advanced Settings */
$conf['updatecheck'] = 0;                //automatically check for new releases?
$conf['userewrite']  = 0;                //this makes nice URLs: 0: off 1: 
.htaccess 2: internal
$conf['useslash']    = 0;                //use slash instead of colon? only 
when rewrite is on
$conf['sepchar']     = '_';              //word separator character in page 
names; may be a
                                         //  letter, a digit, '_', '-', or '.'.
$conf['canonical']   = 0;                //Should all URLs use full canonical 
http://... style?
$conf['fnencode']    = 'url';            //encode filenames (url|safe|utf-8)
$conf['autoplural']  = 0;                //try (non)plural form of nonexisting 
files?
$conf['compression'] = 'gz';             //compress old revisions: (0: off) 
('gz': gnuzip) ('bz2': bzip)
                                         //  bz2 generates smaller files, but 
needs more cpu-power
$conf['gzip_output'] = 0;                //use gzip content encodeing for the 
output xhtml (if allowed by browser)
$conf['compress']    = 1;                //Strip whitespaces and comments from 
Styles and JavaScript? 1|0
$conf['cssdatauri']  = 512;              //Maximum byte size of small images to 
embed into CSS, won't work on IE<8
$conf['send404']     = 0;                //Send a HTTP 404 status for non 
existing pages?
$conf['broken_iua']  = 0;                //Platform with broken 
ignore_user_abort (IIS+CGI) 0|1
$conf['xsendfile']   = 0;                //Use X-Sendfile (1 = lighttpd, 2 = 
standard)
$conf['renderer_xhtml'] = 'xhtml';       //renderer to use for main page 
generation
$conf['readdircache'] = 0;               //time cache in second for the readdir 
operation, 0 to deactivate.
$conf['search_nslimit'] = 0;             //limit the search to the current X 
namespaces
$conf['search_fragment'] = 'exact';      //specify the default fragment search 
behavior
$conf['trustedproxy'] = 
'^(::1|[fF][eE]80:|127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)';
                                         //Regexp of trusted proxy address when 
reading IP using HTTP header
                                         //  if blank, do not trust any proxy 
(including local IP)
/* Feature Flags */
$conf['defer_js'] = 1;                   // Defer javascript to be executed 
after the page's HTML has been parsed. Setting will be removed in the next 
release.
/* Network Settings */
$conf['dnslookups'] = 1;                 //disable to disallow IP to hostname 
lookups
$conf['jquerycdn']  = 0;                 //use a CDN for delivering jQuery?
// Proxy setup - if your Server needs a proxy to access the web set these
$conf['proxy']['host']    = '';
$conf['proxy']['port']    = '';
$conf['proxy']['user']    = '';
$conf['proxy']['pass']    = '';
$conf['proxy']['ssl']     = 0;
$conf['proxy']['except']  = '';
// Safemode Hack - read http://www.dokuwiki.org/config:safemodehack !
$conf['safemodehack'] = 0;
$conf['ftp']['host'] = 'localhost';
$conf['ftp']['port'] = '21';
$conf['ftp']['user'] = 'user';
$conf['ftp']['pass'] = 'password';
$conf['ftp']['root'] = '/home/user/htdocs';

/etc/dokuwiki/plugins.local.php [Errno 13] Permission denied: 
'/etc/dokuwiki/plugins.local.php'
/etc/dokuwiki/userprint.css [Errno 2] No such file or directory: 
'/etc/dokuwiki/userprint.css'
/etc/dokuwiki/userstyle.css [Errno 2] No such file or directory: 
'/etc/dokuwiki/userstyle.css'

-- debconf information:
  dokuwiki/system/restart-webserver: true
  dokuwiki/wiki/superuser: admin
  dokuwiki/wiki/acl: true
  dokuwiki/system/configure-webserver: apache2
  dokuwiki/system/writeconf: false
  dokuwiki/wiki/fullname: DokuWiki Administrator
  dokuwiki/wiki/license: cc-by-sa
  dokuwiki/system/documentroot: /dokuwiki
  dokuwiki/system/writeplugins: false
  dokuwiki/wiki/email: webmaster@localhost
  dokuwiki/wiki/failpass:
* dokuwiki/system/purgepages: false
  dokuwiki/wiki/policy: public
  dokuwiki/system/localnet: 10.0.0.0/24
  dokuwiki/system/accessible: localhost only
  dokuwiki/wiki/title: Debian DokuWiki

-- debsums errors found:
debsums: changed file /usr/share/dokuwiki/inc/Mailer.class.php (from dokuwiki 
package)

Reply via email to