mailx: nss-config-dir = / etc / pki / nssdb /: Nenhum arquivo ou diretório

0

Estou tentando enviar e-mail usando mailx usando servidor SMTP remoto (no meu caso, é office365 SMTP Server).

Aqui está o comando:

# echo "THis is the Body of the email"  | mailx -v -s "This is email subject" -S smtp-use-starttls -S ssl-verify=ignore  -S smtp-auth=login -S smtp=smtp://smtp.office365.com:587 -S [email protected] -S [email protected] -S smtp-auth-password=user_password [email protected] -S nss-config-dir="/etc/pki/nssdb/"

E falha com erro abaixo:

nss-config-dir=/etc/pki/nssdb/: No such file or directory
"/root/dead.letter" 11/339
Resolving host smtp.office365.com . . . done.
Connecting to 132.245.80.146 . . . connected.
220 BY2PR02CA0047.outlook.office365.com Microsoft ESMTP MAIL Service ready at Wed, 5 Nov 2014 10:08:22 +0000
>>> EHLO ip-10-0-1-10.us-west-2.compute.internal
250-BY2PR02CA0047.outlook.office365.com Hello [54.201.139.35]
250-SIZE 78643200
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250 CHUNKING
>>> STARTTLS
220 2.0.0 SMTP server ready
Missing "nss-config-dir" variable.
"/root/dead.letter" 11/339
. . . message not sent.

O erro real é nss-config-dir=/etc/pki/nssdb/: No such file or directory

Agora, tenho um bom diretório com certificados e chaves necessários, conforme necessário, pela opção nss-config-dir , conforme abaixo:

# ls -ld /etc/pki/nssdb/
drwxr-xr-x. 2 root root 4096 Aug 13  2013 /etc/pki/nssdb/

# ls -ltr /etc/pki/nssdb/
total 124
-rw-r--r--. 1 root root 65536 Jan 12  2010 cert8.db
-rw-r--r--. 1 root root 16384 Jan 12  2010 secmod.db
-rw-r--r--. 1 root root  9216 Jan 12  2010 cert9.db
-rw-r--r--. 1 root root 11264 Jan 12  2010 key4.db
-rw-r--r--. 1 root root 16384 Jan 12  2010 key3.db
-rw-r--r--. 1 root root   451 Jan  9  2013 pkcs11.txt

Aqui estão as informações sobre nss-config-dir de man mailx :

      A  directory  that contains the files certN.db to retrieve certificates, keyN.db to retrieve private keys, and secmod.db, where N is a digit.
      These are usually taken from Mozilla installations, so an appropriate value might be  ‘~/.mozilla/firefox/default.clm’.   Mailx  opens  these
      files  read-only  and  does  not  modify  them.   However,  if the files are modified by Mozilla while mailx is running, it will print a ‘Bad
      database’ message.  It may be necessary to create copies of these files that are exclusively used by mailx then.  Only applicable  if  S/MIME
      and SSL/TLS support is built using Network Security Services (NSS).

Eu também tenho o SElinux desativado:

# sestatus
SELinux status:                 disabled

Pergunta:

Por que o comando mailx está dizendo nss-config-dir=/etc/pki/nssdb/: No such file or directory quando eu tenho os arquivos de diretório e chave / cert necessários?

Estas são as informações do meu ambiente:

# uname -a
Linux ip-10-0-1-10.us-west-2.compute.internal 2.6.32-358.14.1.el6.x86_64 #1 SMP Mon Jun 17 15:54:20 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux

# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.4 (Santiago)
Release:        6.4
Codename:       Santiago

# rpm -qa | grep mailx
mailx-12.4-6.el6.x86_64
    
por slayedbylucifer 05.11.2014 / 11:18

3 respostas

1

Eu não sei qual foi o problema. No Ubuntu 12.04 tentei o comando sem nss-config-dir e funcionou muito bem. Aqui está o comando:

# echo "THis is the Body of the email"  | mailx -v -s "This is email subject" -S smtp-use-starttls -S ssl-verify=ignore  -S smtp-auth=login -S smtp=smtp://smtp.office365.com:587 -S [email protected] -S [email protected] -S smtp-auth-password=user_password [email protected]

Não tenho ideia do motivo pelo qual não está funcionando no RHEL. Eu executei strace no RHEL nesse comando, mas não consegui descobrir o problema. strace deu a mensagem abaixo:

stat("nss-config-dir=/etc/pki/nssdb/", 0x7fff7073a310) = -1 ENOENT (No such file or directory)

Eu não sei porque esse diretório não está sendo detectado, mesmo em strace : (

Além disso, no RHEL, omitir nss-config-dir não é uma opção, pois o comando falhará imediatamente com o erro abaixo:

Missing "nss-config-dir" variable.
"/root/dead.letter" 11/346
. . . message not sent.

No entanto, no Ubuntu, nss-config-dir não é necessário e o comando funcionou bem.

Seja como for, estou fechando este tópico, pois posso sobreviver com o Ubuntu.

    
por 06.11.2014 / 10:06
1

O MS tem uma implementação TLS com bugs.

Consegui superá-lo usando o Stunnel com os seguintes dados de configuração:

[office365-smtp]
client = yes
accept = 192.168.100.25:25
connect = my-personal-id.protection.outlook.com:25
protocol = smtp
verify = 2
CAfile = ca-cert.pem
checkHost = my-personal-id.protection.outlook.com
    
por 17.05.2016 / 13:05
1

Eu sugeriria que o motivo subjacente para a falha é que você tenha anexado a configuração -S nss-config-dir="/etc/pki/nssdb/" após um endereço de entrega do destinatário, para que ela seja tratada como um destino baseado em arquivo para entrega .

Você pode ver isso na sua saída strace fornecida em sua resposta:

stat("nss-config-dir=/etc/pki/nssdb/", 0x7fff7073a310) = -1 ENOENT (No such file or directory)

Observe que stat está tentando acessar um arquivo chamado nss-config-dir=/etc/pki/nssdb/ , não o diretório /etc/pki/nssdb/ .

Tente colocar seu endereço de destinatário no final da lista, como este

echo "This is the body of the email" |
mailx -v -s "This is email subject" \
    -S smtp-use-starttls \
    -S ssl-verify=ignore \
    -S smtp-auth=login \
    -S smtp=smtp://smtp.office365.com:587 \
    -S [email protected] \
    -S [email protected] \
    -S smtp-auth-password=user_password \
    -S nss-config-dir="/etc/pki/nssdb/" \
    [email protected]
    
por 17.05.2016 / 13:19