Language:

en_US

switch to room list switch to menu My folders
[#] Thu Nov 07 2024 01:55:20 PM UTC from alperumit

Subject: When I add a mail filter based on message size, citserver crashes

[Reply] [ReplyQuoted] [Move] [Delete] [Headers] [Print]

Hello All,

I added a mail filter to an account I created. The rule is as follows; If the message size is larger than 10MB, send the defined reject message and stop. I tried almost every variation but no luck :( will you please help me to solve this? 

Thank you.  

After defining the rule, when I test it, the following situation occurs in the log.

{"log":"citserver[7]: fulltext: indexing started. msgs 457--458\n","stream":"stderr","time":"2024-11-07T13:50:53.342358177Z"}

{"log":"citserver[7]: msgbase: CtdlFetchMessage(458, 1)\n","stream":"stderr","time":"2024-11-07T13:50:53.344190837Z"}

{"log":"citserver[7]: fulltext: ft_index_message() adding msg 458\n","stream":"stderr","time":"2024-11-07T13:50:53.374346074Z"}

{"log":"citserver[7]: msgbase: CtdlOutputPreLoadedMsg(TheMessage=not null, 0, 0, 0, 1\n","stream":"stderr","time":"2024-11-07T13:50:53.374414953Z"}

{"log":"citserver[7]: msgbase: fixed_output_pre() type=\u003cmultipart/mixed\u003e\n","stream":"stderr","time":"2024-11-07T13:50:53.376436866Z"}

{"log":"citserver[7]: msgbase: fixed_output() part 1:  (text/plain) (22 bytes)\n","stream":"stderr","time":"2024-11-07T13:50:53.376535161Z"}

{"log":"citserver[7]: msgbase: fixed_output_post() type=\u003cmultipart/mixed\u003e\n","stream":"stderr","time":"2024-11-07T13:50:53.37821028Z"}

{"log":"citserver[7]: fulltext: wordbreaking message 458 (23 bytes)\n","stream":"stderr","time":"2024-11-07T13:50:53.378250008Z"}

{"log":"citserver[7]: fulltext: indexing message 458 [2 tokens]\n","stream":"stderr","time":"2024-11-07T13:50:53.37836418Z"}

{"log":"citserver[7]: fulltext: indexer has run for 0 seconds; yielded=0\n","stream":"stderr","time":"2024-11-07T13:50:53.379728317Z"}

{"log":"citserver[7]: user_ops: 5 maps to avayacit03\n","stream":"stderr","time":"2024-11-07T13:50:53.380228496Z"}

{"log":"citserver[7]: msgbase: CtdlFetchMessage(457, 1)\n","stream":"stderr","time":"2024-11-07T13:50:53.38032817Z"}

{"log":"citserver[7]: inboxrules: for avayacit03, messages newer than 457\n","stream":"stderr","time":"2024-11-07T13:50:53.380492983Z"}

{"log":"citserver[7]: inboxrules: processing message #458 which is higher than 457, we are in 0000000005.Mail\n","stream":"stderr","time":"2024-11-07T13:50:53.38068976Z"}

{"log":"citserver[7]: inboxrules: processing rule: 0 , field: size\n","stream":"stderr","time":"2024-11-07T13:50:53.38081185Z"}

{"log":"citserver[7]: inboxrules: loading metadata for message 458\n","stream":"stderr","time":"2024-11-07T13:50:53.38082569Z"}

{"log":"citserver[7]: inboxrules: rule activated\n","stream":"stderr","time":"2024-11-07T13:50:53.380832963Z"}

{"log":"ctdlvisor: pid=7 exited, status=139, exitcode=0\n","stream":"stderr","time":"2024-11-07T13:50:53.430515813Z"}

{"log":"ctdlvisor: citserver crashed on signal 11\n","stream":"stderr","time":"2024-11-07T13:50:53.430548361Z"}

{"log":"ctdlvisor: citserver running on pid=76\n","stream":"stderr","time":"2024-11-07T13:50:53.430624425Z"}

{"log":"ctdlvisor: executing citserver\n","stream":"stderr","time":"2024-11-07T13:50:53.430660564Z"}

{"log":"citserver[76]: main: creating lockfile\n","stream":"stderr","time":"2024-11-07T13:50:53.447751474Z"}

 

 

TRIAGE - 2024nov12  - Art C.

I was able to reproduce this issue at any filter size.  Stack trace:

citserver[1038344]: inboxrules: rule activated

Thread 2 "citserver" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff43256c0 (LWP 1038347)]
0x00005555555ad785 in inbox_do_reject (rule=0x7fffec01b210, msg=0x0) at server/modules/inboxrules/serv_inboxrules.c:372
372             syslog(LOG_DEBUG, "inbox_do_reject: sender: , reject", msg->cm_fields[erFc822Addr]);
(gdb) bt
#0  0x00005555555ad785 in inbox_do_reject (rule=0x7fffec01b210, msg=0x0) at server/modules/inboxrules/serv_inboxrules.c:372
#1  0x00005555555ae83e in inbox_do_msg (msgnum=50, userdata=0x7fffec008e50) at server/modules/inboxrules/serv_inboxrules.c:758
#2  0x00005555555752b8 in CtdlForEachMessage (mode=5, ref=49, search_string=0x0, content_type=0x0, compare=0x0,
CallBack=0x5555555adac9 , userdata=0x7fffec008e50) at server/msgbase.c:730
#3  0x00005555555aeb91 in do_inbox_processing_for_user (usernum=2) at server/modules/inboxrules/serv_inboxrules.c:841
#4  0x00005555555aec45 in perform_inbox_processing () at server/modules/inboxrules/serv_inboxrules.c:871
#5  0x0000555555581168 in PerformSessionHooks (EventType=12) at server/serv_extensions.c:439
#6  0x000055555556c258 in do_housekeeping () at server/housekeeping.c:127
#7  0x0000555555583425 in worker_thread (blah=0x0) at server/sysdep.c:867
#8  0x00007ffff771b134 in start_thread (arg=) at ./nptl/pthread_create.c:442
#9  0x00007ffff779b7dc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

RESOLUTION - 2024nov12 - Art C.

Fixed in https://code.citadel.org/citadel.git/commit/?id=a2dc9c66382e65082492c255a0bf27d187e383bb

If a "reject" action took place when the headers were not loaded, it would reference a null message.  Fixed it by checking for this condition and loading the headers if necessary.  Also amended the function that crashed to return without crashing if it is supplied a null message.