Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can not fetch reports from imap #31

Closed
ghost opened this issue Sep 28, 2022 · 20 comments
Closed

Can not fetch reports from imap #31

ghost opened this issue Sep 28, 2022 · 20 comments

Comments

@ghost
Copy link

ghost commented Sep 28, 2022

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
Copy link

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
Copy link

webiix commented Sep 29, 2022

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

@nasirmgcc
Copy link

nasirmgcc commented Sep 29, 2022

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

@webiix
Copy link

webiix commented Sep 29, 2022

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
Copy link

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

@webiix
Copy link

webiix commented Sep 29, 2022

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
Copy link
Owner

liuch commented Sep 30, 2022

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
Copy link
Owner

liuch commented Sep 30, 2022

@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
Copy link
Author

ghost commented Oct 2, 2022

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
Copy link

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
Copy link
Owner

liuch commented Oct 2, 2022

@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
Copy link
Owner

liuch commented Oct 2, 2022

@nasirmgcc I will write you there.

@webiix
Copy link

webiix commented Oct 3, 2022

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
Copy link
Owner

liuch commented Oct 4, 2022

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
Copy link
Author

ghost commented Oct 4, 2022

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

@nasirmgcc
Copy link

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
Copy link
Author

ghost commented Oct 5, 2022

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
Copy link
Owner

liuch commented Oct 5, 2022

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
Copy link
Author

ghost commented Oct 6, 2022

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
Copy link
Owner

liuch commented Oct 7, 2022

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.

@ghost ghost closed this as completed Oct 7, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants