mailx: nss-config-dir=/etc/pki/nssdb/: No such file or directory
Solution 1
I would suggest that the underlying reason for the failure is that that you have appended the -S nss-config-dir="/etc/pki/nssdb/"
setting after a recipient delivery address, so it is being treated as a file-based target for delivery.
You can see this in your strace
output provided in your answer:
stat("nss-config-dir=/etc/pki/nssdb/", 0x7fff7073a310) = -1 ENOENT (No such file or directory)
Notice that the stat
is trying to access a file called nss-config-dir=/etc/pki/nssdb/
, not the directory /etc/pki/nssdb/
.
Try putting your recipient address at the end of the list, like this
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]
Solution 2
I do not know what the problem was. On Ubuntu 12.04 I tried above command without nss-config-dir
option and it worked just fine. Here it the command:
# 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]
I have no idea why it is not working on RHEL. I ran strace
on RHEL on this command but could not figure out the issue. strace
gave below message:
stat("nss-config-dir=/etc/pki/nssdb/", 0x7fff7073a310) = -1 ENOENT (No such file or directory)
I do not know why this directory is not being detected at all even in strace
:(
Also, On RHEL, omitting nss-config-dir
is not an option as the command will fail immediately with below error:
Missing "nss-config-dir" variable.
"/root/dead.letter" 11/346
. . . message not sent.
However, On Ubuntu, nss-config-dir
is not needed and the command ran fine.
Whatever, I am closing this topic as I can survive with Ubuntu.
Solution 3
MS has a buggy TLS implementation.
I was able to overcome it using Stunnel with the following config data:
[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
Related videos on Youtube
slayedbylucifer
Updated on September 18, 2022Comments
-
slayedbylucifer almost 2 years
I am trying to send email using
mailx
using remote SMTP server (in my case it is office365 SMTP Server).Here is the command:
# 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/"
And it fails with below error:
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.
So the real error is
nss-config-dir=/etc/pki/nssdb/: No such file or directory
Now, I do have a good directory with necessary certs and keys as needed by
nss-config-dir
option as below:# 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
Here is the info about
nss-config-dir
fromman 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).
I also have the
SElinux
Disabled:# sestatus SELinux status: disabled
Question:
Why
mailx
command is sayingnss-config-dir=/etc/pki/nssdb/: No such file or directory
whne I have the necessary directory and key/cert files in it ?Here is my environment info:
# 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