<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hello Team, <div class=""><br class=""></div><div class="">We are running dovecot version (2.3.7.2 (3c910f64b)) on ubuntu 20.04.</div><div class=""><br class=""></div><div class="">Using the doveadm tool via http api we can create emails and move them accordingly to the draft folder by sending http requests via cURL from another server.</div><div class="">We can even attach files. However once we create a http API request bigger than 1MB in size we get the “PAYLOAD TO LARGE” response from dovecot.</div><div class=""><br class=""></div><div class="">Going through the config I see no option to increase the allowed payload size for doveadm http api requests.</div><div class=""><br class=""></div><div class="">However in the source code itself I see that there is a default limit/size of:</div><div class=""><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(197, 134, 192);" class="">#define</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class=""> HTTP_REQUEST_DEFAULT_MAX_PAYLOAD_SIZE       (</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(181, 206, 168);" class="">1</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class=""> </span><span style="color: rgb(212, 212, 212); font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30);" class="">*</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class=""> </span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(181, 206, 168);" class="">1024</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class=""> </span><span style="color: rgb(212, 212, 212); font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30);" class="">*</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class=""> </span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(181, 206, 168);" class="">1024</span><span style="font-family: Menlo, Monaco, "Courier New", monospace; white-space: pre; background-color: rgb(30, 30, 30); color: rgb(86, 156, 214);" class="">)</span></div><div class=""><br class=""></div><div class="">Further I found out that the default is only used if no limit is provided:</div><div class="">===</div><div class=""><div style="color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Menlo, Monaco, "Courier New", monospace; line-height: 18px; white-space: pre;" class=""><div class="">    <span style="color: #c586c0;" class="">if</span> (limits != <span style="color: #569cd6;" class="">NULL</span>) {</div><div class="">        hdr_limits = <span style="color: #9cdcfe;" class="">limits</span>-><span style="color: #9cdcfe;" class="">header</span>;</div><div class="">        max_payload_size = <span style="color: #9cdcfe;" class="">limits</span>-><span style="color: #9cdcfe;" class="">max_payload_size</span>;</div><div class="">    } <span style="color: #c586c0;" class="">else</span> {</div><div class="">        <span style="color: #dcdcaa;" class="">i_zero</span>(&hdr_limits);</div><div class="">        max_payload_size = <span style="color: #b5cea8;" class="">0</span>;</div><div class="">    }</div><br class=""><div class="">    <span style="color: #6a9955;" class="">/* substitute default limits */</span></div><div class="">    <span style="color: #c586c0;" class="">if</span> (<span style="color: #9cdcfe;" class="">parser</span>-><span style="color: #9cdcfe;" class="">max_target_length</span> == <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        <span style="color: #9cdcfe;" class="">parser</span>-><span style="color: #9cdcfe;" class="">max_target_length</span> = HTTP_REQUEST_DEFAULT_MAX_TARGET_LENGTH;</div><div class="">    <span style="color: #c586c0;" class="">if</span> (<span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_size</span> == <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        <span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_size</span> =   HTTP_REQUEST_DEFAULT_MAX_HEADER_SIZE;</div><div class="">    <span style="color: #c586c0;" class="">if</span> (<span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_field_size</span> == <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        <span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_field_size</span> = HTTP_REQUEST_DEFAULT_MAX_HEADER_FIELD_SIZE;</div><div class="">    <span style="color: #c586c0;" class="">if</span> (<span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_fields</span> == <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        <span style="color: #9cdcfe;" class="">hdr_limits</span>.<span style="color: #9cdcfe;" class="">max_fields</span> = HTTP_REQUEST_DEFAULT_MAX_HEADER_FIELDS;</div><div class="">    <span style="color: #c586c0;" class="">if</span> (max_payload_size == <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        max_payload_size = HTTP_REQUEST_DEFAULT_MAX_PAYLOAD_SIZE;</div><br class=""><div class="">    <span style="color: #c586c0;" class="">if</span> ((flags & HTTP_REQUEST_PARSE_FLAG_STRICT) != <span style="color: #b5cea8;" class="">0</span>)</div><div class="">        msg_flags |= HTTP_MESSAGE_PARSE_FLAG_STRICT;</div><div class="">    <span style="color: #dcdcaa;" class="">http_message_parser_init</span>(&<span style="color: #9cdcfe;" class="">parser</span>-><span style="color: #9cdcfe;" class="">parser</span>, input,</div><div class="">        &hdr_limits, max_payload_size, msg_flags);</div><div class="">    <span style="color: #c586c0;" class="">return</span> parser;</div></div></div><div class=""><br class=""></div><div class="">The question arises … how can we change / set the allowed payload size for the doveadm http api, so we can store bigger emails and attachments?</div><div class="">Can we store the desired allowed payload size in an env file somewhere or are there any options to take control of the allowed payload size without changing the source code?</div><div class=""><br class=""></div><div class="">Thanks in advance</div><div class="">Tony</div><div class=""><br class=""></div><div class=""> </div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>