Public bug reported: Thunderbird filters do not find some text strings that follow CR (x0d, carriage return) characters in the body of the email. This problem occurs whether the filtering is done interactively or with filters saved in msgFilterRules.dat using the Tools/Message Filters menu item.
The problem occurs for me in the context of cron jobs that call curl. curl sends lines to stderr that are terminated with CR characters rather than LF characters. This blocks Thunderbird filtering of cron email based on results that occur after the curl command. The problem is occuring with Thunderbird 14.0 on Ubuntu 12.04.1 LTS. The problem can be created all on one machine. Postfix is the MTA using virtual Maildir mailboxes, Dovecot is the imap server. I have recreated the essential problem with the attached files. There are four versions of the same email body. msg1-withCRline.txt is the worst offender and has the following contents: =============== file starts on next line ============ FINDTARGETBEFOREmore 1\r2\r3 FINDOTHERextra FINDTARGETAFTERstuff =============== file ends on previous line ============ where the above text lines are terminated by a LF character (x0a, line feed) and the sequence '\r' denotes the CR character (x0d, carriage return). Some programs recognize the CR character as a line termination character, others do not. Body-contains filters will find 'TARGETBEFORE' but will not find 'OTHER' or 'TARGETAFTER'. msg2-trCR2plus.txt is the same as msg1-withCRline.txt, but with the CR characters replaced by '+' characters. Body-contains filters work correctly with this message body. They find 'TARGETBEFORE', 'OTHER', and 'TARGETAFTER'. msg3-trCR2LF.txt is the same as msg1-withCRline.txt, but with the CR characters replaced by LF characters. Body-contains filters work correctly with this message body. They find 'TARGETBEFORE', 'OTHER', and 'TARGETAFTER'. msg4-shortCRline.txt is the same as msg1-withCRline.txt, but with the two consecutive characters "\r3" deleted, so there is only one CR character in the message body. Body-contains filters will find 'TARGETBEFORE'. They will also find 'OTHER' but will not find 'TARGETAFTER', which suggests the problem is more complicated than the other examples show. sendfiltertest is a simple bash script that will mail each message body using the mail command to a recipient. It should be called with two arguments, the recipient and an optional test number, for example: $./sendfiltertest myemailaddress 7 msgFilterRules.dat is the file containing a stored body-contains filter that looks for 'TARGETAFTER'. The procedure for recreating the problem can be as simple as: 1. Download and extract the above files to a directory. Make sure the sendfiltertest file has executable permissions. Use the chmod command if it does not. 2. Start Thunderbird. 3. Click on the Inbox of the recipient of the test emails. 4. Open a terminal window and change the working directory using the cd command to the directory where the above files have been downloaded. 5. Run the sendfiltertest command. 6. Return to Thunderbird and scroll/sort the Inbox listing to show the four messages sent by the sendfiltertest command, each with a subject that begins with 'Test #ID msgN-', where 'ID' is the second argument given to the sendfiltertest command and 'N' is a digit 1-4 corresponding to the message body file name. 7. Click in the filter text field above the Inbox list of messages, which initially has the prompt 'Filter these message... <Ctrl+Shift+k>'. 8. Enter the text (without the quotes) 'targetb'. All four messages will be selected by the filter. 9. Change the filter text to 'targeta'. Of the four messages, only msg2 and msg3 will be selected. Messages msg1 and msg4 will not be selected. 10. Change the filter text to 'other'. Of the four messages, only msg2, msg3, and msg4 will be selected. Message msg1 will not be selected. My current workaround for this problem is to change the cron job script to redirect the curl stderr to a file and then copy the file to stderr after changing all CR characters to LF characters using the tr command: $tr '\r' '\n' < curl-stderr >&2 ProblemType: Bug DistroRelease: Ubuntu 12.04 Package: thunderbird 14.0+build1-0ubuntu0.12.04.1 ProcVersionSignature: Ubuntu 3.2.0-29.46-generic-pae 3.2.24 Uname: Linux 3.2.0-29-generic-pae i686 NonfreeKernelModules: wl AddonCompatCheckDisabled: False AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24. ApportVersion: 2.0.1-0ubuntu12 Architecture: i386 ArecordDevices: **** List of CAPTURE Hardware Devices **** card 0: Intel [HDA Intel], device 0: ALC270 Analog [ALC270 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC0: webdev1 2925 F.... pulseaudio BuildID: 20120714011110 CRDA: Error: command ['iw', 'reg', 'get'] failed with exit code 1: nl80211 not found. Card0.Amixer.info: Card hw:0 'Intel'/'HDA Intel at 0xb4400000 irq 44' Mixer name : 'Intel IbexPeak HDMI' Components : 'HDA:10ec0270,103c1439,00100100 HDA:80862804,80860101,00100000' Controls : 27 Simple ctrls : 13 Channel: Unavailable Date: Fri Aug 24 14:24:55 2012 ExecutablePath: /usr/lib/thunderbird/thunderbird ForcedLayersAccel: False IfupdownConfig: auto lo iface lo inet loopback InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release i386 (20110427.1) IpRoute: default via 192.168.1.254 dev eth0 proto static 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.65 metric 1 PrefSources: prefs.js Profiles: Profile0 (Default) - LastVersion=14.0/20120714011110 (In use) RelatedPackageVersions: icedtea-6-plugin 1.2-2ubuntu1.1 rhythmbox-mozilla 2.96-0ubuntu4.1 totem-mozilla 3.0.1-0ubuntu21 RunningIncompatibleAddons: False SourcePackage: thunderbird UpgradeStatus: Upgraded to precise on 2012-06-02 (82 days ago) WifiSyslog: Aug 24 08:55:32 HP10C dhclient: DHCPREQUEST of 192.168.1.65 on eth0 to 192.168.1.254 port 67 Aug 24 08:55:32 HP10C dhclient: DHCPACK of 192.168.1.65 from 192.168.1.254 Aug 24 08:55:32 HP10C dhclient: bound to 192.168.1.65 -- renewal in 34206 seconds. Aug 24 12:30:17 HP10C kernel: [870110.921074] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id Aug 24 12:39:25 HP10C kernel: [870657.891846] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id dmi.bios.date: 09/06/2010 dmi.bios.vendor: Hewlett-Packard dmi.bios.version: F.35 dmi.board.asset.tag: Base Board Asset Tag dmi.board.name: 1439 dmi.board.vendor: Hewlett-Packard dmi.board.version: 60.3E dmi.chassis.asset.tag: Chassis Asset Tag dmi.chassis.type: 10 dmi.chassis.vendor: Hewlett-Packard dmi.chassis.version: Chassis Version dmi.modalias: dmi:bvnHewlett-Packard:bvrF.35:bd09/06/2010:svnHewlett-Packard:pnHPG72NotebookPC:pvr0594110000252710001020100:rvnHewlett-Packard:rn1439:rvr60.3E:cvnHewlett-Packard:ct10:cvrChassisVersion: dmi.product.name: HP G72 Notebook PC dmi.product.version: 0594110000252710001020100 dmi.sys.vendor: Hewlett-Packard ** Affects: thunderbird (Ubuntu) Importance: Undecided Status: New ** Tags: apport-bug i386 precise running-unity -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1041387 Title: CR characters block/confuse Thunderbird body-contains filters To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/thunderbird/+bug/1041387/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs