Process Flow: OOO Notifications
OOO Notification Triggers
OOO notifications are not sent under these conditions. Each condition will indicate logging in mailbox.log when applicable.
- Feature Enabled: zimbraFeatureOutOfOfficeReplyEnabled account/COS attribute is not TRUE. Default is TRUE.
- User Preference: zimbraPrefOutOfOfficeReplyEnabled account/COS attribute is not TRUE.
- Spam/Trash: Original message ends up in "Junk" or "Trash" folder. Logged with "in spam ..." or "in trash ...".
- Date: Received message is outside of zimbraPrefOutOfOfficeFromDate and zimbraPrefOutOfOfficeUntilDate. This check is ignored if the from date and until dates are NULL.
- Envelope Sender: Envelope sender is empty or invalid. When the sender is null, logging is "envelope sender null …". If the sender string length is less than 1, the logging is "envelope sender empty …". If the envelope sender is not an email address, logging is "envelope sender invalid …".
- Auto-Submitted Header: Original message contains the Auto-Submitted header with a value that is not no. Logging is "auto-submitted not no …".
- Precedence Header: Original message contains the Precedence header with a values bulk, junk, or list. Logging is "precedence (bulk | junk | list) …".
- Mailing List Owners: Check if the envelope sender indicates a mailing list owner.
Envelope Sender Has Value Logging NULL envelope sender invalid ... owner- or -owner envelope sender has owner- or -owner ... -request envelope sender contains -request ... mailer-daemon envelope sender is mailer-daemon ... majordomo envelope sender is majordomo ... listserv envelope sender is listserv ...
- Content-type multipart/report: Message MIME is content-type multipart/report. Logging is "content-type multipart/report …".
- Recipient in TO/CC: The recipient was not directly mentioned in TO: or CC:. Multi-valued account attribute zimbraPrefOutOfOfficeDirectAddress is used to specify other valid direct recipient addresses. For performance reasons, the Zimbra notifier will only check the first 10 recipients in the TO: or CC: fields to guard against having to check a large number of addresses. Logging is "not direct …".
- Notification already sent: A notification has already been sent to the sender. Based on the COS/account attribute zimbraPrefOutOfOfficeCacheDuration, the notifier checks for an existing row in table zimbra.out_of_office. This table tracks the mailbox ID, the reply recipient and timestamp. Logged with "already sent …".
Building and Sending the OOO Reply
The following is the process of building and sending the out-of-office notification. The notifier:
- Sets the From, display name, and reply-to according to zimbraPrefFromAddress, zimbraPrefFromDisplay, and zimbraPrefReplyToAddress account attributes.
- Sets the Subject to "Re: " + original message subject.
- Sets the Auto-Submitted header to auto-replied (zimbra: vacation) (not customizable).
- Sets the Precedence header to bulk. This discourages older systems from responding to the OOO reply.
- Sets the message body to the zimbraPrefOutOfOfficeReply account attribute.
- Sets the envelope from to <> if global config attribute zimbraAutoSubmittedNullReturnPath is TRUE. Otherwise, the envelope from is set to the account name.
- Sends the message and not saving it to the Sent folder. Logging is "outofoffice sent dest …".
- Stores a row in the zimbra.out_of_office table indicating that an OOO reply was sent to the specified address.