Skip to content

Docker image 2.1.5 missing php-mailparse #2404

@cdwiegand

Description

@cdwiegand

Bug report

Title

Docker image is unable to accept sendgrid inbound parse as the stacktrace shows the mailparse_msg_create() function is undefined in the 2.1.5 (current) docker image.

Preconditions

The docker image webkul/krayin:2.1.5 running locally, with its API/web endpoint exposed for Sendgrid calls.

Steps to reproduce

  1. Run docker service exposing port 80 to internet.
  2. Setup sendgrid to send to the /admin/mail/inbound-parse endpoint as documented.
  3. Monitor output (in my case I used a proxy to literally see the network traffic, as no php error is emitted, so no logging otherwise occurs).
  4. Trigger email in.

Expected result

Emails should show in the inbox, or at least not return 500 to Sendgrid.

Actual result

There is no Dockerfile present in the git repo, so I do not see exactly how it is being built, but when run and exposed to the internet (say at https://example.com/) and SendGrid is configured to send the inbound_parse calls to https://example.com/admin/mail/inbound-parse, and an email is triggered, this stacktrace will be returned (HTML for surrounding page removed):

<!--
Error: Call to undefined function mailparse_msg_create() in file /var/www/html/laravel-crm/packages/Webkul/Email/src/Helpers/Parser.php on line 156

#0 /var/www/html/laravel-crm/packages/Webkul/Email/src/InboundEmailProcessor/SendgridEmailProcessor.php(43): Webkul\Email\Helpers\Parser-&gt;setText()
#1 /var/www/html/laravel-crm/packages/Webkul/Admin/src/Http/Controllers/Mail/EmailController.php(207): Webkul\Email\InboundEmailProcessor\SendgridEmailProcessor-&gt;processMessage()
#2 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Webkul\Admin\Http\Controllers\Mail\EmailController-&gt;inboundParse()
#3 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller-&gt;callAction()
#4 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\Routing\ControllerDispatcher-&gt;dispatch()
#5 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route-&gt;runController()
#6 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\Routing\Route-&gt;run()
#7 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Routing\Router-&gt;Illuminate\Routing\{closure}()
#8 /var/www/html/laravel-crm/packages/Webkul/Admin/src/Http/Middleware/Locale.php(38): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#9 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Webkul\Admin\Http\Middleware\Locale-&gt;handle()
#10 /var/www/html/laravel-crm/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(66): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#11 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Barryvdh\Debugbar\Middleware\InjectDebugbar-&gt;handle()
#12 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#13 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Routing\Middleware\SubstituteBindings-&gt;handle()
#14 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#15 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken-&gt;handle()
#16 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#17 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\View\Middleware\ShareErrorsFromSession-&gt;handle()
#18 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#19 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession-&gt;handleStatefulRequest()
#20 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Session\Middleware\StartSession-&gt;handle()
#21 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#22 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse-&gt;handle()
#23 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#24 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\EncryptCookies-&gt;handle()
#25 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#26 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\Pipeline\Pipeline-&gt;then()
#27 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\Routing\Router-&gt;runRouteWithinStack()
#28 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\Routing\Router-&gt;runRoute()
#29 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\Routing\Router-&gt;dispatchToRoute()
#30 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router-&gt;dispatch()
#31 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Foundation\Http\Kernel-&gt;Illuminate\Foundation\Http\{closure}()
#32 /var/www/html/laravel-crm/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(66): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#33 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Barryvdh\Debugbar\Middleware\InjectDebugbar-&gt;handle()
#34 /var/www/html/laravel-crm/packages/Webkul/Installer/src/Http/Middleware/CanInstall.php(28): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#35 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Webkul\Installer\Http\Middleware\CanInstall-&gt;handle()
#36 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#37 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest-&gt;handle()
#38 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings-&gt;handle()
#39 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#40 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ValidatePostSize-&gt;handle()
#41 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#42 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance-&gt;handle()
#43 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#44 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\HandleCors-&gt;handle()
#45 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#46 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies-&gt;handle()
#47 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline-&gt;Illuminate\Pipeline\{closure}()
#48 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline-&gt;then()
#49 /var/www/html/laravel-crm/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel-&gt;sendRequestThroughRouter()
#50 /var/www/html/laravel-crm/public/index.php(51): Illuminate\Foundation\Http\Kernel-&gt;handle()
#51 {main}

Reviewing Ondrej's repo, I think the docker image would have to be upgraded to at least Jammy. Currently it uses Focal as a base, and Ondrej doesn't publish packages for the older Ubuntu versions. Then adding an apt-get install -y php-mailparse may resolve the issue. If someone can point me to the Dockerfile used for building, I'm happy to make a PR once I get it working.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions