Whenever the p≡p Engine creates an additional message, it will set the X-pEp-auto-consume flag.

This flag will inform the receiving p≡p application about this been an additional message which should not be passed to the application.

The sending application must set this flag in the transport message, if it is set in struct _message after calling encrypt_message(). The receiving application must set this flag in struct _message prior to calling decrypt_message(), if the flag is set in the transport message.

If X-pEp-auto-consume in struct _message after to calling decrypt_message(), this was an additional message and the application should not continue processing it.


  • In the encrypted case the flag will be transported within the encrypted message. The sending application will not see it and the receiving application will only see it after calling decrypt_message().

  • In the unencrypted case the flag needs be transported within the (unencrypted) transport message.

  • How to transport the flag is defined in the resp. message format.

  • For a message format not supporting attachments, but sending “attachments” as separate messages, the sending application needs to set the flag when sending “attachment” messages.

  • Unencrypted additional messages might e.g. be generated by Sync (e.g. sync.beacon) or Distribution (soon).

Implementation notes:

  • When following the algorithm described above processing of this flag is the same for both encrypted and unencrypted case.