gotthardp / rabbitmq-email

SMTP Gateway Plugin for RabbitMQ
Mozilla Public License 2.0
179 stars 20 forks source link

issue with specifying settings for gen_ #47

Closed mforde84 closed 1 year ago

mforde84 commented 2 years ago

We're running into an issue with gen_smtp thats bouncing emails with max length greater than 10mb.

Gen_smtp controls this setting here: https://github.com/gen-smtp/gen_smtp/blob/master/src/gen_smtp_server_session.erl#L71

However I'm not sure if its configurable in the rabbitmq_email server config block namely because the server_session.erl does not list it as an option: https://github.com/gen-smtp/gen_smtp/blob/master/src/gen_smtp_server_session.erl#L93

Accompanying gen_smtp documentation seems to confirm this:

gen_smtp_server:start(
    smtp_server_example,
    [{sessionoptions, [{allow_bare_newlines, fix},
                       {callbackoptions, [{parse, true}]}]}]).
...
{sessionoptions, gen_smtp_server_session:options()} - see below
...
Session options are:

    {allow_bare_newlines, false | ignore | fix | strip} - see above
    {hostname, inet:hostname()} - which hostname server should send in response to HELO / EHLO commands. Default: inet:gethostname().
    {tls_options, [ssl:server_option()]} - options to pass to ssl:handshake/3 (OTP-21+) / ssl:ssl_accept/3 when STARTTLS command is sent by the client. Only needed if STARTTLS extension is enabled
    {protocol, smtp | lmtp} - when lmtp is passed, the control flow of the [Local Mail Transfer Protocol](https://tools.ietf.org/html/rfc2033) is applied. LMTP is derived from SMTP with just a few variations and is used by standard [Mail Transfer Agents (MTA)](https://en.wikipedia.org/wiki/Message_transfer_agent), like Postfix, Exim and OpenSMTPD to send incoming email to local mail-handling applications that usually don't have a delivery queue. The default value of this option is smtp.
    {callbackoptions, any()} - value will be passed as 4th argument to callback module's init/4

Am I missing something obvious here where it's possible to override this setting: https://github.com/gen-smtp/gen_smtp/blob/fe4f164353d1a08fe0a64200c75fa358abe57b29/src/gen_smtp_server_session.erl#L37

I've tried through the rabbitmq_email server_config block but unsuccessfully

    {rabbitmq_email, [
        {server_config, [
            [{port, 2525}, {protocol, tcp}, {domain, "cqvlhbqe001.test.cm.com"},{auth, never}, {tls, never}, {address,{0,0,0,0}}], [{sessionoptions, [{maxsize, 200}]}]

I assume I need to merge a change to gen_smtp_server_session.erl to include maxsize as a definable option, correct? that or i need to fork, and build rabbitmq_email with my fork?

mforde84 commented 2 years ago

ill attempt building with a fork and see what happens

a-marcellini commented 1 year ago

Hi, I've stumbled upon the same problem then I planned to fork the gen_smtp and set another value for the max size. However, when I tried to build the project, without any modification it didn't work. It worked until 8/April, for sure, but not It doesn't build anymore. The strange thing is that we haven't changed anything since then. The error we get is the following:

#13 34.48 make[1]: Entering directory '/root/rabbitmq-email/.erlang.mk/rabbitmq-server/deps/rabbit_common'
#13 34.50  DEP    rabbitmq_codegen (master)
#13 34.51 error: no valid pathspec among:  master master master
#13 34.51 make[1]: *** [../../erlang.mk:5102: /root/rabbitmq-email/deps/rabbitmq_codegen] Error 1
#13 34.51 make[1]: Leaving directory '/root/rabbitmq-email/.erlang.mk/rabbitmq-server/deps/rabbit_common'
#13 34.51 make: *** [erlang.mk:8082: /root/rabbitmq-email/.erlang.mk/recursive-deps-list.log] Error 2

What we see is that the symbolic links to the modules are not created, but we ignore the reason.

Maybe there has been a change on the rabbitmq side? Could you try to build the project just to see if it is a general problem or just mine?

Here you can find our try: https://github.com/sistemi-iungo/rabbitmq-email/pull/1

Thank you!

lukebakken commented 1 year ago

@a-marcellini - please open a separate issue for the build problem. Most likely I need to update some files in this repo for recent RabbitMQ build changes.

a-marcellini commented 1 year ago

@a-marcellini - please open a separate issue for the build problem. Most likely I need to update some files in this repo for recent RabbitMQ build changes.

Done, Issue #52

lukebakken commented 1 year ago

We have to return a new max message size in the handle_HELO callback, as shown here:

https://github.com/gen-smtp/gen_smtp/blob/master/src/smtp_server_example.erl#L82-L86