Langgenius-email in Dify returns success upon sending email but no email received using maildev #635

Closed
opened 2026-02-16 10:19:59 -05:00 by yindo · 16 comments
Owner

Originally created by @nemofira09 on GitHub (Sep 9, 2025).

Self Checks

  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues Dify issues & Dify Official Plugins, including closed ones.
  • I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
  • [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.7.2

Plugin version

0.0.7

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

  1. Deploy Dify Self-host Community in VM
  2. Install MailDev via NPM in the VM
  3. Connect Langgenius-email plugin in a workflow and enter credentials

What we've tried:

  1. Can curl the 1025 / 1080 ports from another machine within the same network
  2. Sent an email manually via swak - Maildev was able to receive the email.

✔️ Error log

No error logs generated.
Checked:

  1. Docker-plugin_daemon-1
  2. Docker-api-1
  3. Docker-nginx-1
  4. Docker-ssrf_proxy-1
  5. Live Maildev logs

No error logs found.

Originally created by @nemofira09 on GitHub (Sep 9, 2025). ### Self Checks - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [Dify issues](https://github.com/langgenius/dify/issues) & [Dify Official Plugins](https://github.com/langgenius/dify-official-plugins/issues), including closed ones. - [x] I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)). - [x] [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.7.2 ### Plugin version 0.0.7 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce 1. Deploy Dify Self-host Community in VM 2. Install MailDev via NPM in the VM 3. Connect Langgenius-email plugin in a workflow and enter credentials What we've tried: 1. Can curl the 1025 / 1080 ports from another machine within the same network 2. Sent an email manually via swak - Maildev was able to receive the email. ### ✔️ Error log No error logs generated. Checked: 1. Docker-plugin_daemon-1 2. Docker-api-1 3. Docker-nginx-1 4. Docker-ssrf_proxy-1 5. Live Maildev logs No error logs found.
yindo added the bug label 2026-02-16 10:19:59 -05:00
yindo closed this issue 2026-02-16 10:19:59 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

The Langgenius-email plugin gets its SMTP server address directly from your configuration—whatever you enter for smtp_server is used as-is. If your Maildev instance is running outside the plugin's Docker container, using 127.0.0.1 or localhost will not work, since that refers to the plugin container itself, not the host or another container. Instead, use the Docker network hostname for Maildev (for example, maildev if both are on the same Docker network) as the SMTP server address. This is a common source of "success" responses with no email actually delivered when using Dockerized services. The plugin supports Docker DNS hostnames, so as long as the network is set up correctly, it should work as expected1 2 .

Also, the plugin logs errors internally, but by default only at the INFO level. If you need more details, you may need to temporarily increase the log level to DEBUG in the plugin container or source code for troubleshooting1 .

Double-check that your SMTP settings (host, port, username, password, encryption method) match your Maildev setup, and confirm that the plugin container can reach Maildev's SMTP port (1025) using the configured hostname. If you still see "success" but no email, try running a connectivity test (like telnet maildev 1025) from inside the plugin container.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> The Langgenius-email plugin gets its SMTP server address directly from your configuration—whatever you enter for `smtp_server` is used as-is. If your Maildev instance is running outside the plugin's Docker container, using `127.0.0.1` or `localhost` will not work, since that refers to the plugin container itself, not the host or another container. Instead, use the Docker network hostname for Maildev (for example, `maildev` if both are on the same Docker network) as the SMTP server address. This is a common source of "success" responses with no email actually delivered when using Dockerized services. The plugin supports Docker DNS hostnames, so as long as the network is set up correctly, it should work as expected[^1][^2]. Also, the plugin logs errors internally, but by default only at the INFO level. If you need more details, you may need to temporarily increase the log level to DEBUG in the plugin container or source code for troubleshooting[^1]. Double-check that your SMTP settings (host, port, username, password, encryption method) match your Maildev setup, and confirm that the plugin container can reach Maildev's SMTP port (1025) using the configured hostname. If you still see "success" but no email, try running a connectivity test (like `telnet maildev 1025`) from inside the plugin container. [^1]: [Langgenius-email plugin source: SMTP config and error handling](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/main.py) [^2]: [Plugin uses user-supplied SMTP host, supports Docker DNS](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send_mail.py) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/2ecd09bb-82e6-43d7-8fa9-4d09df3fb690?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 9, 2025):

@dosu

I am using the VM's IP Address since that is where the maildev server is hosted and they are not within the same docker network since maildev is installed directly on the VM not via docker. Within the VM I am able to access via telnet.

@nemofira09 commented on GitHub (Sep 9, 2025): @dosu I am using the VM's IP Address since that is where the maildev server is hosted and they are not within the same docker network since maildev is installed directly on the VM not via docker. Within the VM I am able to access via telnet.
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

Since MailDev is running directly on the VM and not in Docker, using the VM's IP as the SMTP server is correct in principle—but Docker containers sometimes can't reach the host network as expected. Even if telnet works from the VM, it doesn't guarantee connectivity from inside the plugin container.

To confirm network access, try running telnet or nc from inside the plugin container to the VM's IP on port 1025. If that fails, the issue is likely Docker network isolation. If it works, double-check that your SMTP config in the plugin matches MailDev's setup (no auth, no TLS, etc.), and that MailDev is listening on 0.0.0.0, not just localhost.

If you still see "success" but no email, try using host.docker.internal as the SMTP host (if your Docker version supports it), or add an extra_hosts entry in your docker-compose to map a hostname to the VM's IP. The plugin will only report success if the SMTP transaction completes without errors—if MailDev accepts the message but doesn't show it, the issue is likely on the MailDev side or with how it's listening for connections, not with the plugin's error handling logic (source).

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> Since MailDev is running directly on the VM and not in Docker, using the VM's IP as the SMTP server is correct in principle—but Docker containers sometimes can't reach the host network as expected. Even if telnet works from the VM, it doesn't guarantee connectivity from inside the plugin container. To confirm network access, try running telnet or nc from inside the plugin container to the VM's IP on port 1025. If that fails, the issue is likely Docker network isolation. If it works, double-check that your SMTP config in the plugin matches MailDev's setup (no auth, no TLS, etc.), and that MailDev is listening on 0.0.0.0, not just localhost. If you still see "success" but no email, try using host.docker.internal as the SMTP host (if your Docker version supports it), or add an extra_hosts entry in your docker-compose to map a hostname to the VM's IP. The plugin will only report success if the SMTP transaction completes without errors—if MailDev accepts the message but doesn't show it, the issue is likely on the MailDev side or with how it's listening for connections, not with the plugin's error handling logic ([source](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send_mail.py)). <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/09042185-6768-44b0-82b6-d8359df47fa9?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 9, 2025):

I am able to curl ip_address:1025 of maildev inside docker-plugin_daemon-1.
setting maildev to 0.0.0.0 makes it inaccessible even inside the VM.
The configuration is accurate to the maildev config.
@dosu

@nemofira09 commented on GitHub (Sep 9, 2025): I am able to curl ip_address:1025 of maildev inside docker-plugin_daemon-1. setting maildev to 0.0.0.0 makes it inaccessible even inside the VM. The configuration is accurate to the maildev config. @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

Given your setup, the most likely cause is that the SSRF proxy in Dify's Docker deployment is blocking SMTP traffic to MailDev, even though curl works. Recent changes to Dify's SSRF proxy enforce a deny-all-by-default policy, allowing only HTTP/HTTPS ports unless you explicitly whitelist your VM's IP and port 1025 for SMTP in the proxy config. This means SMTP connections can silently fail after the TCP handshake, causing the plugin to report "success" even though MailDev never receives the email (details).

To fix this, update your SSRF proxy config (usually squid.conf.template or /etc/squid/conf.d/) to allow your VM's IP and port 1025, then restart the ssrf_proxy container. You can also try using host.docker.internal as the SMTP server address if your Docker setup supports it, but this hostname must also be whitelisted in the SSRF proxy config (reference).

If you want to confirm the issue, try sending a test email using Python's smtplib from inside the plugin container with the same SMTP settings. If MailDev still doesn't receive it, it's almost certainly a proxy/network restriction.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> Given your setup, the most likely cause is that the SSRF proxy in Dify's Docker deployment is blocking SMTP traffic to MailDev, even though curl works. Recent changes to Dify's SSRF proxy enforce a deny-all-by-default policy, allowing only HTTP/HTTPS ports unless you explicitly whitelist your VM's IP and port 1025 for SMTP in the proxy config. This means SMTP connections can silently fail after the TCP handshake, causing the plugin to report "success" even though MailDev never receives the email ([details](https://github.com/langgenius/dify/pull/24393)). To fix this, update your SSRF proxy config (usually `squid.conf.template` or `/etc/squid/conf.d/`) to allow your VM's IP and port 1025, then restart the `ssrf_proxy` container. You can also try using `host.docker.internal` as the SMTP server address if your Docker setup supports it, but this hostname must also be whitelisted in the SSRF proxy config ([reference](https://github.com/langgenius/dify/issues/25068#issuecomment-3247969767)). If you want to confirm the issue, try sending a test email using Python's `smtplib` from inside the plugin container with the same SMTP settings. If MailDev still doesn't receive it, it's almost certainly a proxy/network restriction. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/ac763282-1ece-4c96-bf4d-f96fcc08d3b2?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 9, 2025):

How do I edit the ssrf_proxy config to allow the VM IP as well as the 1025 port. What to input in squid.conf.template.
@dosu

@nemofira09 commented on GitHub (Sep 9, 2025): How do I edit the ssrf_proxy config to allow the VM IP as well as the 1025 port. What to input in squid.conf.template. @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

To allow SMTP traffic to your VM's IP on port 1025 in Dify's SSRF proxy, edit your docker/ssrf_proxy/squid.conf.template and add or update the following line (usually near other acl SSL_ports entries):

acl SSL_ports port 1025-65535

This expands the allowed ports for CONNECT requests, which is needed for SMTP and other non-standard ports reference.

After editing, restart the ssrf_proxy container (or run squid -k reconfigure inside it) for changes to take effect reference.

If you want to restrict access to only your VM's IP, you can also add an ACL for your VM IP, like:

acl allowed_vm dst <YOUR_VM_IP>
http_access allow allowed_vm

Make sure these lines appear before any http_access deny all rule. If you have custom rules or want to allow only port 1025, adjust accordingly.

Let me know if you need a full example or run into any issues!

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> To allow SMTP traffic to your VM's IP on port 1025 in Dify's SSRF proxy, edit your `docker/ssrf_proxy/squid.conf.template` and add or update the following line (usually near other `acl SSL_ports` entries): ``` acl SSL_ports port 1025-65535 ``` This expands the allowed ports for CONNECT requests, which is needed for SMTP and other non-standard ports [reference](https://github.com/langgenius/dify/issues/12792). After editing, restart the `ssrf_proxy` container (or run `squid -k reconfigure` inside it) for changes to take effect [reference](https://github.com/langgenius/dify/issues/20005). If you want to restrict access to only your VM's IP, you can also add an ACL for your VM IP, like: ``` acl allowed_vm dst <YOUR_VM_IP> http_access allow allowed_vm ``` Make sure these lines appear before any `http_access deny all` rule. If you have custom rules or want to allow only port 1025, adjust accordingly. Let me know if you need a full example or run into any issues! <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/b1ea7646-6ba9-4d5c-b546-15481e2c71b7?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 9, 2025):

The ports are all enabled by default upon checking, and adding:
acl allowed_vm dst <YOUR_VM_IP>
http_access allow allowed_vm
Did not work. Still can't send.
@dosu

@nemofira09 commented on GitHub (Sep 9, 2025): The ports are all enabled by default upon checking, and adding: acl allowed_vm dst <YOUR_VM_IP> http_access allow allowed_vm Did not work. Still can't send. @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

The key step is to explicitly uncomment or add the line:

acl SSL_ports port 1025-65535

in your squid.conf.template (it’s commented out by default), and make sure it appears before any http_access deny CONNECT !SSL_ports rule. Just adding an IP ACL or allow rule is not enough—if port 1025 isn’t in SSL_ports, Squid will always block CONNECT requests to it, regardless of other rules reference.

After editing, restart the ssrf_proxy container so the changes take effect. You can verify the running config inside the container (/etc/squid/squid.conf) to confirm the line is active.

If you still can’t send, check the Squid logs (docker logs <ssrf_proxy_container>) for denied CONNECT requests to port 1025. If you see denies, the port isn’t enabled in SSL_ports. If not, confirm the plugin is routing SMTP traffic through the proxy and not bypassing it.

Let me know if you want a full example or if you’re still stuck after these steps.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> The key step is to explicitly uncomment or add the line: ``` acl SSL_ports port 1025-65535 ``` in your `squid.conf.template` (it’s commented out by default), and make sure it appears before any `http_access deny CONNECT !SSL_ports` rule. Just adding an IP ACL or allow rule is not enough—if port 1025 isn’t in `SSL_ports`, Squid will always block CONNECT requests to it, regardless of other rules [reference](https://github.com/langgenius/dify/blob/45ef177809e36afa2529abcf862e57fec6f2159b/docker/ssrf_proxy/squid.conf.template). After editing, restart the `ssrf_proxy` container so the changes take effect. You can verify the running config inside the container (`/etc/squid/squid.conf`) to confirm the line is active. If you still can’t send, check the Squid logs (`docker logs <ssrf_proxy_container>`) for denied CONNECT requests to port 1025. If you see denies, the port isn’t enabled in `SSL_ports`. If not, confirm the plugin is routing SMTP traffic through the proxy and not bypassing it. Let me know if you want a full example or if you’re still stuck after these steps. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/92e3fe62-e415-461e-9ebc-7f9199f5712b?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 9, 2025):

@dosu
I've uncommented acl SSL_ports port 1025-65535 and checked the ssrf_proxy-1 container and there are no denied logs, or any errors. How do I confirm if plugin is routing SMTP traffic through the proxy and not bypassing it.

@nemofira09 commented on GitHub (Sep 9, 2025): @dosu I've uncommented acl SSL_ports port 1025-65535 and checked the ssrf_proxy-1 container and there are no denied logs, or any errors. How do I confirm if plugin is routing SMTP traffic through the proxy and not bypassing it.
Author
Owner

@dosubot[bot] commented on GitHub (Sep 9, 2025):

The Langgenius-email plugin sends SMTP traffic directly to the configured SMTP server and does not route it through the SSRF proxy by default—there’s no proxy logic or environment variable support for SMTP in the plugin code or container config (source).

To confirm the actual network path, you can:

  • Run tcpdump or tshark inside the plugin_daemon container while sending a test email to see if traffic goes straight to your VM’s IP/port 1025.
  • Check the Squid (ssrf_proxy) access logs for any CONNECT attempts to port 1025 during a test send—if you see nothing, the plugin is bypassing the proxy.
  • Temporarily block direct SMTP access from the plugin_daemon container to the VM’s IP (using iptables or Docker network controls); if sending fails, it confirms direct routing.

If you want to force SMTP through a proxy, you’d need to set up a SOCKS or HTTP CONNECT proxy and explicitly configure smtplib for it, which isn’t supported out of the box. By default, SMTP traffic from the plugin is direct (source).

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 9, 2025): <!-- Answer --> The Langgenius-email plugin sends SMTP traffic directly to the configured SMTP server and does not route it through the SSRF proxy by default—there’s no proxy logic or environment variable support for SMTP in the plugin code or container config ([source](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send_mail.py)). To confirm the actual network path, you can: - Run `tcpdump` or `tshark` inside the plugin_daemon container while sending a test email to see if traffic goes straight to your VM’s IP/port 1025. - Check the Squid (ssrf_proxy) access logs for any CONNECT attempts to port 1025 during a test send—if you see nothing, the plugin is bypassing the proxy. - Temporarily block direct SMTP access from the plugin_daemon container to the VM’s IP (using iptables or Docker network controls); if sending fails, it confirms direct routing. If you want to force SMTP through a proxy, you’d need to set up a SOCKS or HTTP CONNECT proxy and explicitly configure smtplib for it, which isn’t supported out of the box. By default, SMTP traffic from the plugin is direct ([source](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/main.py)). <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/438afdf8-0881-464d-89ff-5c48620e731d?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 10, 2025):

@dosu
I tried tcdump via:

sudo tcpdump -i any port 1025 -nn

and got the logs:
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
05:14:50.065766 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [S], seq 2190638644, win 64240, options [mss 1460,sackOK,TS val 1650518111 ecr 0,nop,wscale 7], length 0
05:14:50.065777 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [S], seq 2190638644, win 64240, options [mss 1460,sackOK,TS val 1650518111 ecr 0,nop,wscale 7], length 0
05:14:50.065910 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [S.], seq 639284647, ack 2190638645, win 65160, options [mss 1460,sackOK,TS val 2075721432 ecr 1650518111,nop,wscale 7], length 0
05:14:50.065921 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [S.], seq 639284647, ack 2190638645, win 65160, options [mss 1460,sackOK,TS val 2075721432 ecr 1650518111,nop,wscale 7], length 0
05:14:50.065994 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 1, win 502, options [nop,nop,TS val 1650518111 ecr 2075721432], length 0
05:14:50.065999 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 1, win 502, options [nop,nop,TS val 1650518111 ecr 2075721432], length 0
05:14:50.177747 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 1:23, ack 1, win 510, options [nop,nop,TS val 2075721544 ecr 1650518111], length 22
05:14:50.177764 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 1:23, ack 1, win 510, options [nop,nop,TS val 2075721544 ecr 1650518111], length 22
05:14:50.177853 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 23, win 502, options [nop,nop,TS val 1650518223 ecr 2075721544], length 0
05:14:50.177860 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 23, win 502, options [nop,nop,TS val 1650518223 ecr 2075721544], length 0
05:14:50.179689 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 1:20, ack 23, win 502, options [nop,nop,TS val 1650518225 ecr 2075721544], length 19
05:14:50.179695 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 1:20, ack 23, win 502, options [nop,nop,TS val 1650518225 ecr 2075721544], length 19
05:14:50.179756 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [.], ack 20, win 510, options [nop,nop,TS val 2075721546 ecr 1650518225], length 0
05:14:50.179763 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [.], ack 20, win 510, options [nop,nop,TS val 2075721546 ecr 1650518225], length 0
05:14:50.180552 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 23:114, ack 20, win 510, options [nop,nop,TS val 2075721547 ecr 1650518225], length 91
05:14:50.180564 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 23:114, ack 20, win 510, options [nop,nop,TS val 2075721547 ecr 1650518225], length 91
05:14:50.180913 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 20:26, ack 114, win 502, options [nop,nop,TS val 1650518226 ecr 2075721547], length 6
05:14:50.180919 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 20:26, ack 114, win 502, options [nop,nop,TS val 1650518226 ecr 2075721547], length 6
05:14:50.181414 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 114:123, ack 26, win 510, options [nop,nop,TS val 2075721548 ecr 1650518226], length 9
05:14:50.181425 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 114:123, ack 26, win 510, options [nop,nop,TS val 2075721548 ecr 1650518226], length 9
05:14:50.181697 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [F.], seq 26, ack 123, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0
05:14:50.181702 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [F.], seq 26, ack 123, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0
05:14:50.181841 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [F.], seq 123, ack 27, win 510, options [nop,nop,TS val 2075721548 ecr 1650518227], length 0
05:14:50.181850 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [F.], seq 123, ack 27, win 510, options [nop,nop,TS val 2075721548 ecr 1650518227], length 0
05:14:50.181909 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 124, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0
05:14:50.181913 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 124, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0

@nemofira09 commented on GitHub (Sep 10, 2025): @dosu I tried tcdump via: sudo tcpdump -i any port 1025 -nn and got the logs: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes 05:14:50.065766 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [S], seq 2190638644, win 64240, options [mss 1460,sackOK,TS val 1650518111 ecr 0,nop,wscale 7], length 0 05:14:50.065777 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [S], seq 2190638644, win 64240, options [mss 1460,sackOK,TS val 1650518111 ecr 0,nop,wscale 7], length 0 05:14:50.065910 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [S.], seq 639284647, ack 2190638645, win 65160, options [mss 1460,sackOK,TS val 2075721432 ecr 1650518111,nop,wscale 7], length 0 05:14:50.065921 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [S.], seq 639284647, ack 2190638645, win 65160, options [mss 1460,sackOK,TS val 2075721432 ecr 1650518111,nop,wscale 7], length 0 05:14:50.065994 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 1, win 502, options [nop,nop,TS val 1650518111 ecr 2075721432], length 0 05:14:50.065999 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 1, win 502, options [nop,nop,TS val 1650518111 ecr 2075721432], length 0 05:14:50.177747 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 1:23, ack 1, win 510, options [nop,nop,TS val 2075721544 ecr 1650518111], length 22 05:14:50.177764 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 1:23, ack 1, win 510, options [nop,nop,TS val 2075721544 ecr 1650518111], length 22 05:14:50.177853 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 23, win 502, options [nop,nop,TS val 1650518223 ecr 2075721544], length 0 05:14:50.177860 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 23, win 502, options [nop,nop,TS val 1650518223 ecr 2075721544], length 0 05:14:50.179689 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 1:20, ack 23, win 502, options [nop,nop,TS val 1650518225 ecr 2075721544], length 19 05:14:50.179695 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 1:20, ack 23, win 502, options [nop,nop,TS val 1650518225 ecr 2075721544], length 19 05:14:50.179756 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [.], ack 20, win 510, options [nop,nop,TS val 2075721546 ecr 1650518225], length 0 05:14:50.179763 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [.], ack 20, win 510, options [nop,nop,TS val 2075721546 ecr 1650518225], length 0 05:14:50.180552 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 23:114, ack 20, win 510, options [nop,nop,TS val 2075721547 ecr 1650518225], length 91 05:14:50.180564 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 23:114, ack 20, win 510, options [nop,nop,TS val 2075721547 ecr 1650518225], length 91 05:14:50.180913 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 20:26, ack 114, win 502, options [nop,nop,TS val 1650518226 ecr 2075721547], length 6 05:14:50.180919 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [P.], seq 20:26, ack 114, win 502, options [nop,nop,TS val 1650518226 ecr 2075721547], length 6 05:14:50.181414 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 114:123, ack 26, win 510, options [nop,nop,TS val 2075721548 ecr 1650518226], length 9 05:14:50.181425 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [P.], seq 114:123, ack 26, win 510, options [nop,nop,TS val 2075721548 ecr 1650518226], length 9 05:14:50.181697 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [F.], seq 26, ack 123, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0 05:14:50.181702 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [F.], seq 26, ack 123, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0 05:14:50.181841 br-51d34c30828f Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [F.], seq 123, ack 27, win 510, options [nop,nop,TS val 2075721548 ecr 1650518227], length 0 05:14:50.181850 veth1fdcd87 Out IP 192.168.200.240.1025 > 172.18.0.9.44192: Flags [F.], seq 123, ack 27, win 510, options [nop,nop,TS val 2075721548 ecr 1650518227], length 0 05:14:50.181909 veth1fdcd87 P IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 124, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0 05:14:50.181913 br-51d34c30828f In IP 172.18.0.9.44192 > 192.168.200.240.1025: Flags [.], ack 124, win 502, options [nop,nop,TS val 1650518227 ecr 2075721548], length 0
Author
Owner

@dosubot[bot] commented on GitHub (Sep 10, 2025):

Your tcpdump logs show a successful TCP connection and data exchange between the plugin_daemon container and MailDev on port 1025, so network connectivity is not the issue.

The Langgenius-email plugin sends SMTP traffic directly to MailDev, bypassing the SSRF proxy, and supports flexible SMTP config—including host, port, username, password, and encryption method (SSL, TLS, NONE). By default, it tries to use TLS and login if credentials are provided, which can cause problems with MailDev if it’s set up for plain SMTP with no auth or TLS (plugin code reference).

Next steps:

  • Double-check your plugin SMTP config: set encryption to NONE, leave username and password blank, and use port 1025.
  • Try sending a test email using Python’s smtplib from inside the plugin_daemon container with these settings. If MailDev receives it, the plugin config is the issue.
  • Check MailDev logs for any sign of received or rejected messages at the time of your test send.

If MailDev still doesn’t receive emails, it’s likely an application-level mismatch (TLS/auth enabled in plugin, but not supported by MailDev). Let me know what you find in the MailDev logs or if you need a sample Python script for testing.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 10, 2025): <!-- Answer --> Your tcpdump logs show a successful TCP connection and data exchange between the plugin_daemon container and MailDev on port 1025, so network connectivity is not the issue. The Langgenius-email plugin sends SMTP traffic directly to MailDev, bypassing the SSRF proxy, and supports flexible SMTP config—including host, port, username, password, and encryption method (SSL, TLS, NONE). By default, it tries to use TLS and login if credentials are provided, which can cause problems with MailDev if it’s set up for plain SMTP with no auth or TLS ([plugin code reference](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send.py)). Next steps: - Double-check your plugin SMTP config: set encryption to NONE, leave username and password blank, and use port 1025. - Try sending a test email using Python’s smtplib from inside the plugin_daemon container with these settings. If MailDev receives it, the plugin config is the issue. - Check MailDev logs for any sign of received or rejected messages at the time of your test send. If MailDev still doesn’t receive emails, it’s likely an application-level mismatch (TLS/auth enabled in plugin, but not supported by MailDev). Let me know what you find in the MailDev logs or if you need a sample Python script for testing. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/c9e9bf5d-4824-49c2-a58a-a6945ae6ac1b?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 10, 2025):

SMTP config is set to none, but I cannot set the username and password because it is a required field in the langgenius-email field. The port is set to 1025. I am unable to test within the container because the necessary tools aren't installed, and it is not connected to the internet.
@dosu

@nemofira09 commented on GitHub (Sep 10, 2025): SMTP config is set to none, but I cannot set the username and password because it is a required field in the langgenius-email field. The port is set to 1025. I am unable to test within the container because the necessary tools aren't installed, and it is not connected to the internet. @dosu
Author
Owner

@dosubot[bot] commented on GitHub (Sep 10, 2025):

The langgenius-email plugin always requires username and password fields and tries to authenticate with the SMTP server—even if you set encryption to NONE and your server (MailDev) does not require authentication. This is a limitation in the plugin's design: there is no built-in way to skip authentication, and the UI forces you to enter something for those fields see code.

The only current workaround is to use dummy credentials (like username: test, password: test). This will only work if MailDev ignores the AUTH command; otherwise, the email won't be delivered see implementation.

If you want a real fix, you’d need to patch the plugin so it only calls server.login() if both username and password are non-empty, similar to how the attachments logic works in send_mail.py see logic:

# Replace in send.py:
server.login(params.email_account, params.email_password)

# With:
if params.email_account and params.email_password:
    server.login(params.email_account, params.email_password)

This change would allow you to leave the fields blank and send mail without authentication, making it compatible with MailDev.

Since you can't install tools or test inside the container, you could test from the host or another container with Python's smtplib, or temporarily modify the Dockerfile to install testing tools if needed.

Let me know if you want a more detailed patch or have questions about modifying the plugin!

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Sep 10, 2025): <!-- Answer --> The langgenius-email plugin always requires username and password fields and tries to authenticate with the SMTP server—even if you set encryption to NONE and your server (MailDev) does not require authentication. This is a limitation in the plugin's design: there is no built-in way to skip authentication, and the UI forces you to enter something for those fields [see code](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/manifest.yaml). The only current workaround is to use dummy credentials (like username: `test`, password: `test`). This will only work if MailDev ignores the AUTH command; otherwise, the email won't be delivered [see implementation](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send.py). If you want a real fix, you’d need to patch the plugin so it only calls `server.login()` if both username and password are non-empty, similar to how the attachments logic works in `send_mail.py` [see logic](https://github.com/langgenius/dify-official-plugins/blob/f2dbcfad79db89143e00655ea6a0b51fefc96da6/tools/email/tools/send_mail.py): ```python # Replace in send.py: server.login(params.email_account, params.email_password) # With: if params.email_account and params.email_password: server.login(params.email_account, params.email_password) ``` This change would allow you to leave the fields blank and send mail without authentication, making it compatible with MailDev. Since you can't install tools or test inside the container, you could test from the host or another container with Python's smtplib, or temporarily modify the Dockerfile to install testing tools if needed. Let me know if you want a more detailed patch or have questions about modifying the plugin! <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/08a9e5d0-3956-4d4a-85a3-ed94ec257e71?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/1690)
Author
Owner

@nemofira09 commented on GitHub (Sep 10, 2025):

Finally solved it.
Turns out that you just need to use the --incoming-user and --incoming-pass flags when running maildev, and the values should match the email username and email password you typed in the langgenius-email form.

@nemofira09 commented on GitHub (Sep 10, 2025): Finally solved it. Turns out that you just need to use the --incoming-user and --incoming-pass flags when running maildev, and the values should match the email username and email password you typed in the langgenius-email form.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#635