Rule dispositionNotificationContent() {
return Sequence(
push(MDNReport.builder()),
Optional(Sequence(reportingUaField(), ACTION(setReportingUaField()), crlf())),
Optional(Sequence(mdnGatewayField(), ACTION(setMdnGatewayField()), crlf())),
Optional(Sequence(originalRecipientField(), ACTION(setOriginalRecipientField()), crlf())),
Sequence(finalRecipientField(), ACTION(setFinalRecipientField()), crlf()),
Optional(Sequence(originalMessageIdField(), ACTION(setOriginalMessageIdField()), crlf())),
Sequence(dispositionField(), ACTION(setDispositionField()), crlf()),
ZeroOrMore(Sequence(errorField(), ACTION(addErrorField()), crlf())),
ZeroOrMore(Sequence(extentionField(), ACTION(addExtensionField()), crlf())),
ACTION(buildMDNReport()));
}