liuch / dmarc-srg

A php parser, viewer and summary report generator for incoming DMARC reports.
GNU General Public License v3.0
218 stars 32 forks source link

Can not fetch reports from imap #31

Closed ghost closed 1 year ago

ghost commented 1 year ago

I can't get dmarc-srg to retrieve the reports from imap. The connection is correct on the panel, but when I run the fetch_reports I get this:

`/php utils/fetch_reports.php PHP Fatal error: Uncaught Error: Call to undefined function Liuch\DmarcSrg\Mail\imap_utf8_to_mutf7() in /public_html/dmarc/classes/Mail/MailBox.php:230 Stack trace:

0 /public_html/dmarc/classes/Mail/MailBox.php(171): Liuch\DmarcSrg\Mail\MailBox->ensureConnection()

1 /public_html/dmarc/classes/Sources/MailboxSource.php(88): Liuch\DmarcSrg\Mail\MailBox->sort('SORTDATE', 'UNSEEN', false)

2 /public_html/dmarc/classes/Report/ReportFetcher.php(68): Liuch\DmarcSrg\Sources\MailboxSource->rewind()

3 /public_html/dmarc/utils/fetch_reports.php(117): Liuch\DmarcSrg\Report\ReportFetcher->fetch()

4 {main}

thrown in /public_html/dmarc/classes/Mail/MailBox.php on line 230`

Seems I need to have imap_utf8_to_mutf7 on the system, but this is only provided if libcclient exports utf8_to_mutf7 (explained here: https://www.php.net/manual/en/function.imap-utf8-to-mutf7.php)

nasirmgcc commented 1 year ago

Hi i configure it and it's working fine as connection but not fetching the emails what is the procedure to import the attachment?

webiix commented 1 year ago

cd /usr/local/share/dmarc-srg && php utils/fetch_reports.php

nasirmgcc commented 1 year ago

what to write in Cronjob? or what to call from Cronjob?

webiix commented 1 year ago

what to write in Cronjob? or what to call from Cronjob?

Actually, it's the line in my previous message. But it doesn't work. You can test it by running on the command line...

nasirmgcc commented 1 year ago

so , you mean everyday i have to loggedin to server go to shell and try this command ? not a solution dear.

webiix commented 1 year ago

so , you mean everyday i have to loggedin to server go to shell and try this command ? not a solution dear.

You don't understand me... You put the command line cd /usr/local/share/dmarc-srg && php utils/fetch_reports.php on your cronjob. Usually this should import the reports from the email into the database. But the fetch_reports.php doesn't work because of the error in 1st message.

liuch commented 1 year ago

Hello. The mailbox availability check in the administration panel uses this function as well. If this check passes without problems, then it's something else. I tried to fix it in the last commit. Can you test it?

liuch commented 1 year ago

@nasirmgcc, If you want to get report automatically, you should add a cronjob for that. I gave you an example in #25. You can learn more about this functionality here: https://en.wikipedia.org/wiki/Cron

ghost commented 1 year ago

Hello. The mailbox availability check in the administration panel uses this function as well. If this check passes without problems, then it's something else. I tried to fix it in the last commit. Can you test it?

The check passes. But I am still getting the error after your last commit.

nasirmgcc commented 1 year ago

for me it's working fine, but the " CRONJOB " is not working to fetch the reports, i followd #25 but i have no idea what's wrong

liuch commented 1 year ago

@xervers, I have no idea why it happens. Temporarily you can try to replace all imap_utf8_to_mutf7 function calls with imap_utf7_encode in classes/Mail/MailBox.php file. The both functions have one parameter.

liuch commented 1 year ago

@nasirmgcc I will write you there.

webiix commented 1 year ago

Hello. Still not working: `/php utils/fetch_reports.php PHP Fatal error: Uncaught Error: Call to undefined function imap_utf7_encode() in /public_html/dmarc/classes/Mail/MailBox.php:230 Stack trace:

0 /public_html/dmarc/classes/Mail/MailBox.php(171): Liuch\DmarcSrg\Mail\MailBox->ensureConnection()

1 /public_html/dmarc/classes/Sources/MailboxSource.php(88): Liuch\DmarcSrg\Mail\MailBox->sort('SORTDATE', 'UNSEEN', false)

2 /public_html/dmarc/classes/Report/ReportFetcher.php(68): Liuch\DmarcSrg\Sources\MailboxSource->rewind()

3 /public_html/dmarc/utils/fetch_reports.php(117): Liuch\DmarcSrg\Report\ReportFetcher->fetch()

4 {main}

thrown in /public_html/dmarc/classes/Mail/MailBox.php on line 230`

It seems to me that something is preventing the access to general functions.

liuch commented 1 year ago

It seems to me that you have different versions of the php interpreter for cli and web. And the cli version doesn't have IMAP support. Is it possible?

ghost commented 1 year ago

Hello. I tried with all 7 php versions I have, and all have the same issue.

nasirmgcc commented 1 year ago

Call to undefined function imap_utf7_encode()

Where is the IMAP support for PHP? try to use with PHP 7.3 and whose Hosting service provider you are using ? I am using JUSTHOST and it fixed not immediately, after 24 hour's

You have to put phpinfo(); get the all the information and then share here, then hopefully @liuch can advise you proplery with the solution.

ghost commented 1 year ago

Call to undefined function imap_utf7_encode()

Where is the IMAP support for PHP?

try to use with PHP 7.3 and whose Hosting service provider you are using ? I am using JUSTHOST and it fixed not immediately, after 24 hour's You have to put phpinfo(); get the all the information and then share here, then hopefully @liuch can advise you proplery with the solution.

Please stop hijacking the thread. I am my own provider. Don't you think it wasn't the 1st thing I checked? Also, the test connection on the control panel works well so IMAP support is not the issue.

liuch commented 1 year ago

It may be that you are using different versions of php for the web server and for the console. One version may have support for imap functions, and another may not. I have Debian/GNU linux on my desktop and it currently has two separate versions of php packages and each version has its own imap package: php7.3-imap and php7.4-imap. The second one is installed but the first on is not. So if command php is linked to php7.3 some functions may not work in the console even though they work on the web-version. That's why I am asking you to compare the versions. I have no more ideas, sorry.

p.s. I am going to add the display of the php version in the About dialog.

ghost commented 1 year ago

Ok, today I recompiled the libcclient with the exports utf8_to_mutf7. Checked that the PHP modules didn't changed. Tried to re-run the cron and now I get the error: SQLSTATE[HY000] [2002] No such file or directory A brief google search showed that I need to change the "localhost" to "127.0.0.1" for my database connection. After correction, I could get the reports to be parsed and inserted on the database correctly.

Looking back, libcclient needs to be compiled with utf8_to_mutf7 in order to export utf8_to_mutf7. I found it strange that it wasn't compiled with it by default...

Anyway, I got it working. It wasn't a module missing on php-cli.

Why not use the default php imap functions (https://www.php.net/manual/en/book.imap.php) and write a whole set of functions to connect and manage imap? I don't see the point...

liuch commented 1 year ago

A brief google search showed that I need to change the "localhost" to "127.0.0.1" for my database connection. After correction, I could get the reports to be parsed and inserted on the database correctly.

All my configs work fine with localhost. I guess it depends on the database and dns settings.

Why not use the default php imap functions (https://www.php.net/manual/en/book.imap.php) and write a whole set of functions to connect and manage imap? I don't see the point...

Please note that the functions mentioned here, are in this list. I always try to use only standard functions without external dependencies.

Anyway, I got it working. It wasn't a module missing on php-cli.

I'm glad the script worked. Thanks for the info.