Erro ao executar o comando para dar um get email

1. Erro ao executar o comando para dar um get email

Jefferson de Medeiros Ferreira da Silva
jmfs

(usa Ubuntu)

Enviado em 02/05/2025 - 15:22h

Alguém tem alguma ideia que possa me dar uma direção para solucionar o problema ?

Em algum momento, acredito entre o final do dia 27/03/2025 e o inicio do dia 28/03/2025, por alguma atualização ou, o mais provavel a instalação de um pacore de monitoramento,
nosso servidor ocomon, que utilizava a versão 6.0, parou conseguir ter acesso ao nosso ao nosso servidor de e-mail.

- Quando faço a chamada ao getMailAndOpenTicket.php usando o seguinte comando:

/usr/bin/php /var/www/html/ocomon/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php

Recebo a seguinte mensagem com um Warning do PHP:

PHP Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40

Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40
No ticket created
----------------------------------------------

Fiz uma pesquisa , desconsiderando o Warning, procurando o texto 'No ticket created' e o localizei na linha 250 do script abaixo:

/var/www/html/ocomon/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php

que o conjunto onde encontra-se o texto é:

$message->move($newMailbox);
echo json_encode(['ticket' => $create->response()->ticket], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// var_dump($create->response());
} else {
echo "No ticket created " . PHP_EOL;
// var_dump($create->response());
}


Neste ponto, tirei o comentário da linha var_dump($create->response());

ficando assim o conjunto destas linhas:

$message->move($newMailbox);
echo json_encode(['ticket' => $create->response()->ticket], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// var_dump($create->response());
} else {
echo "No ticket created " . PHP_EOL;
var_dump($create->response());
}

Executando novamente o scritp, recebemos a seguinte resposta:

PHP Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40

Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40
No ticket created
object(stdClass)#25 (1) {
["errors"]=>
object(stdClass)#35 (2) {
["type"]=>
string(12) "invalid_data"
["message"]=>
string(28) "Endereço de email inválido"
}
}
----------------------------------------------


Abaixo os dados de nosso servidor:

#cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo


#php -v
PHP 8.3.6 (cli) (built: Mar 19 2025 10:08:38) (NTS)


  


2. Re: Erro ao executar o comando para dar um get email

Buckminster
Buckminster

(usa Debian)

Enviado em 04/05/2025 - 17:24h

Posso somente te dar uma direção, pois é difícil saber exatamente o que está acontecendo sem estar por dentro de toda a estrutura.

Tentei encontrar a versão 6.0 no site, mas não consegui.
No Ocomon 6.1 no arquivo /includes/functions/functions.php da linha 38 à linha 50 tem esse trecho de código:

function isLocalhost() {
$whitelist = array('127.0.0.1', '::1', 'localhost');

if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
return true;
} else {
return false;
}
}

return false;
}

Veja que tem um if que verifica se a chave REMOTE_ADDR existe no array $_SERVER.
Verifique se não mudou o IP do servidor de e-mail ou se essa ferramenta de monitoramento não está no meio da comunicação entre o Ocomon e o servidor de e-mail.

E no arquivo /ocomon-6.1/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php da linha 246 até a linha 259 tem esse trecho:

$message->move($newMailbox);
echo json_encode(['ticket' => $create->response()->ticket], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// var_dump($create->response());
} else {
echo "No ticket created " . PHP_EOL;
// var_dump($create->response());
}
} else {
echo "Message is a reply - " . PHP_EOL;

if (!array_key_exists('references', $headers)) {
echo "Message reference not found in database " . PHP_EOL;
return;
}

A mensagem Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40
No ticket created

diz que REMOTE_ADDR se refere a uma chave de array sem um valor e por isso não foi possível criar o ticket e retornou no var_dump: "string(28) "Endereço de email inválido"".
A API ou função que está tentando criar um ticket não está recebendo um e-mail válido no campo esperado.
Pode ser:
Campo de e-mail vazio;
Campo com valor mal formatado;
Valor vindo de um array mal construído.

Veja no manual do PHP:
'REMOTE_ADDR'
O endereço IP de onde o usuário está visualizando a página atual.
A variável REMOTE_ADDR é definida como o endereço de rede do cliente que envia a solicitação ao servidor e o Ocomon não está enviando a chave REMOTE_ADDR no array $_SERVER.
https://www.php.net/manual/pt_BR/reserved.variables.server.php

Mas até aí tudo bem, pois a variável $_SERVER["REMOTE_ADDR"] não está definida no contexto em que o código está sendo executado.
Isso normalmente ocorre quando o script está sendo chamado por linha de comando (CLI) ou por requisição sem contexto HTTP, como via curl, agendamento cron, ou até alguma API ou, como no teu caso: /usr/bin/php.

Toda vez que você fizer a chamada /usr/bin/php /var/www/html/ocomon/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php provavelmente dará esse warning porque a requisição HTTP não é enviada, o que é óbvio, então sempre dará que a chave REMOTE_ADDR está "undefined".

$_SERVER é um array contendo informação como headers, caminhos, e outras informações. As informações nesse array são criadas pelo servidor web específico e, portanto, não há garantias que sempre existirão as mesmas informações, podendo algumas serem omitidas ou adicionadas em relação a lista criada.

Veja aí no ocomon 6.0 o trecho de código em /var/www/html/ocomon/includes/functions/functions.php on line 40
se tem esse if verificador que tem no 6.1.

Talvez instalou alguma coisa aí que prioriza a obtenção do IP a partir de determinados cabeçalhos HTTP em vez do REMOTE_ADDR do PHP o que torna possível ignorar restrições anti-spam baseadas em IP ou, talvez, como você mesmo disse, foi a instalação desse pacote de monitoramento que interferiu.

Talvez nessa ferramenta de monitoramento tenha de acrescentar o IP do servidor onde está o Ocomon e/ou do servidor de e-mail.

Essas mensagens:

object(stdClass)#25 (1) {
["errors"]=>
object(stdClass)#35 (2) {
["type"]=>
string(12) "invalid_data"
["message"]=>
string(28) "Endereço de email inválido"

vem do json, é decorrência da chave REMOTE_ADDR que vai indefinida/vazia.

Acredito que o problema não está exatamente nesses trechos de códigos.

Verifique a configuração de SMTP e de envio de e-mails no Ocomon:
https://ocomon.com.br/site/manual-smtp/

Faça o básico também: dê um ping do servidor do Ocomon para o servidor de e-mail e vice-versa.

_________________________________________________________
Rule number one: Always listen 'to' Buck!
Enquanto o cursor estiver pulsando, há vida!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts