chef server doesn't send mails - email

I have Chef-server 12 installed on CentOS 6.6. When I want to remind me a password for user on page https://ip/password-reset/new I don't get any mail
and in exim logs I see
2016-04-27 14:52:17 1avQp7-0001iP-0U <= <> R=1avQp6-0001iO-Om U=exim P=local S=1611
2016-04-27 14:52:17 1avQp7-0001iP-0U => opscode <opscode#non_resorvable_fqdn> R=localuser T=local_delivery
2016-04-27 14:52:17 1avQp7-0001iP-0U Completed
2016-04-27 14:53:23 Start queue run: pid=6616
2016-04-27 14:53:23 End queue run: pid=6616
but when I send mail with xmail everything is fine
2016-04-27 14:45:05 1avQi9-0001g2-DL <= user#non_resorvable_fqdn U=ec2-user P=local S=611
2016-04-27 14:45:05 1avQi9-0001g2-DL gmail-smtp-in.l.google.com [2a00:1450:4013:c00::1a] Network is unreachable
2016-04-27 14:45:08 1avQi9-0001g2-DL => user2#gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [173.194.65.27] X=UNKNOWN:ECDHE-RSA-AES128-GCM-SHA256:128
2016-04-27 14:45:08 1avQi9-0001g2-DL Completed
2016-04-27 14:49:44 1avQme-0001hE-4B <= <> R=1avQme-0001hD-2t U=exim P=local S=1611
2016-04-27 14:49:44 1avQme-0001hE-4B => opscode <opscode#non_resorvable_fqdn> R=localuser T=local_delivery
2016-04-27 14:49:44 1avQme-0001hE-4B Completed
And I got this mail

Check your chef logs and MTA (exim, postfix, etc) logs and config. In my case, after instaling chef-manage, on Web UI after clicking "reset password" in log /var/log/chef-manage/web/current I found:
[date] INFO -- : Rendered password_reset_mailer/password_reset.text.erb (1.2ms)
[date] sh: 1: /usr/sbin/sendmail: not found
I installed postfix, and now mails are sent as they should.
So I think that in your case exim is problem.

Chef uses the sendmail -t argument when sending mails. This option is interpreted differently accross various implementations of sendmail.
From the exim man page:
-t
When Exim is receiving a locally-generated, non-SMTP message on its standard input, the -t option causes the recipients of the message to be obtained from the To:, Cc:, and Bcc: header lines in the message instead of from the command arguments. The addresses are extracted before any rewriting takes place and the Bcc: header line, if present, is then removed.
If the command has any arguments, they specify addresses to which the message is not to be delivered. That is, the argument addresses are removed from the recipients list obtained from the headers. This is compatible with Smail 3 and in accordance with the documented behaviour of several versions of Sendmail, as described in man pages on a number of operating systems (e.g. Solaris 8, IRIX 6.5, HP-UX 11). However, some versions of Sendmail add argument addresses to those obtained from the headers, and the O'Reilly Sendmail book documents it that way. Exim can be made to add argument addresses instead of subtracting them by setting the option extract_addresses_remove_arguments false.
So to make exim work with Chef server, you add:
extract_addresses_remove_arguments = false
to the main/02_exim4-config_options section of your exim configuration
If you’ve chosen the option to use a single configuration file, your configuration is in:
/etc/exim4/exim4.conf.template (on debian systems)
Then just restart exim and it should work.
See also: https://github.com/mikel/mail/issues/70

Related

exim Timing Out to Gmail

I have a Centos server with exim installed. I am trying to send en email from the command line like this:
exim -v account#gmail.com
From: email#mydomain.com
To: account#gmail.com
Subject: test email
this is a test
^D
I have also tried:
echo 'test message' | mail -s Test1 account#gmail.com
as well as sending from a PHP script.
The result is the email times out. The logs indicate exim is timing out:
H=alt2.gmail-smtp-in.l.google.com [173.194.219.26] Connection timed out
I believe iptables are correct. I have scanned the server from an external IP and ports 25, 265 and 587 are open. (Not sure 587 needs to be since this will be a send-only situation most likely.)
I have also telnet'd to port 25 successfully. (Most of the successful resolutions I have found involved port 25 being blocked. I don't think that is the case here. I have also called my provider and checked. They claim port 25 connections are not blocked.)
I would appreciate some ideas.
Thank you.

Trying to set up Catch-All Email Address with Sendmail

I'm trying to create a catchall email address with Sendmail (it will be used to catch email bounces for Oceth's OEMPro).
First I started by creating a new user:
# useradd -s /bin/false bounces
# passwd bounces
Then I created & opened a virtusertable file with vim virtusertable and added:
bounces#sub.example.com bounces
#sub.example.com bounces#sub.example.com
Then I added the below line to sendmail.mc near the end but before the MAILER_DEFINITIONS of with
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
Finally, I ran
# make
Updating databases ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases...
Updating auth ...
sasl2-bin not installed, not configuring sendmail support.
To enable sendmail SASL2 support at a later date, invoke "/usr/share/sendmail/update_auth"
Creating /etc/mail/relay-domains
# Optional file...
Updating Makefile ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile...
Updating sendmail.cf ...
The following file(s) have changed:
/etc/mail/sendmail.cf
** ** You should issue `/etc/init.d/sendmail reload` ** **
# service sendmail reload
* Reloading Mail Transport Agent (MTA) sendmail [ OK ]
# service sendmail restart
* Restarting Mail Transport Agent (MTA) sendmail [ OK ]
After all this it does not seem to be working, how can I test this properly. I've tried sending an email to bounces#sub.example.com but when I look in /var/mail/ I don't see the bounces user.
# ls /var/mail/
root www-data other-user
I created a MX DNS record for this too, e.g. sub.example.com.
The other indication it is not working correctly is that we are getting a 504 error when we try to use this email address as our POP3 Monitoring method in Oceth's OEMPro.
UPDATE
I tried running the below commands as root, in an attempt to debug the issue but I'm not clear what it's telling me.
root:/# sendmail -d60.5 -bv no-such-user#sub.example.com
map_lookup(dequote, other-user, %0=other-user) => NOT FOUND (0)
map_lookup(host, sub.example.com, %0=sub.example.com) => sub.example.com. (0)
no-such-user#sub.example.com... deliverable: mailer esmtp, host sub.example.com., user no-such-user#sub.example.com
root:/# sendmail -d60.5 -bv bounces#sub.example.com
map_lookup(dequote, other-user, %0=other-user) => NOT FOUND (0)
map_lookup(host, sub.example.com, %0=sub.example.com) => sub.example.com. (0)
bounces#sub.example.com... deliverable: mailer esmtp, host sub.example.com., user bounces#sub.example.com
I'm not sure why it first tries to look up another user on our system called other-user
UPDATE 2
After running # echo '$=w' | sendmail -bt I get the following result.
# echo '$=w' | sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> localhost
ip-1??-??-??-??5
[1??.??.??.??5]
ip-1??-??-??-??5.ec2.internal
[127.0.0.1]
ip-172-31-31-167.eu-west-1.compute.internal
In sendmail.mc I've changed FEATURE(virtusertable', hash -o /etc/mail/virtusertable.db')dnl to FEATURE(virtusertable', hash -o /etc/mail/virtusertable.db')dnl, basically I just removed the -o flag.
Then I updated /etc/mail/local-host-names to include sub.example.com, so now it reads:
localhost
ip-17?-??-??-?67.eu-west-1.compute.internal
sub.example.com
Then I ran:
# service sendmail restart
* Restarting Mail Transport Agent (MTA) sendmail
# echo '$=w' | sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> localhost
ip-1??-??-??-??5
[1??.??.??.??5]
ip-1??-??-??-??5.ec2.internal
[127.0.0.1]
sub.example.com
ip-17?-??-??-?67.eu-west-1.compute.internal
After sending an email to bunces#sub.example.com I still don't see the mailbox in /var/mail/
# ls /var/mail/
root www-data other-user
I also still get the 504 error in the OEMPro app when I try to configure it with these settings.
Sendmail consults virtusertable only for deliveries to local email domains (listed in $=w) and virtual domains (listed in $={VirtHost}). It seems that sub.example.com is not listed in any of them.
You can add sub.example.com to list of local email domains by listing it in file /etc/mail/local-host-names (one domain/name per line). After modifying the file restart sendmail daemon or send HUP signal to sendmail daemon.
You can check content of $=w by executing the following command as root:
echo '$=w' | sendmail -bt
Sendmail by default automagically adds some "guesswork" to $=w.
Extra hint:
Do not use -o (optional) flag in FEATURE(virtusertable). Without the flag sendmail refuses to start when compiled version of virtusertable is unawailable.

Postfix transport: deliver different domains via different relayhosts

Postfix version 2.11.0
What I'm trying to accomplish is to have mail destined for a particular domain to be relayed through SendGrid but all other outgoing mail to be sent from my local server directly. I have this configuration in /etc/postfix/transport:
example.com smtp:[smtp.sendgrid.net]:587
.example.com smtp:[smtp.sendgrid.net]:587
* :
My understanding from all the searches I've done and reading the Postfix docs is that this should work but if I send to any other domain, for example gmail.com it's still getting relayed through SendGrid.
An example from /var/log/mail.log:
Oct 26 16:15:46 myhost postfix/smtp[25783]: A75F0C04F9: to=<PRIVACY_MASKED#gmail.com>, relay=smtp.sendgrid.net[108.168.190.108]:587, delay=11, delays=11/0.02/0.22/0.03, dsn=2.0.0, status=sent (250 Ok: queued as iTwf5zmCQQSgz_I6sVpSSA)
Is there some other configuration I'm missing?
Ok, now I see the error of my ways. In sasl_passwd I had this:
smtp.sendgrid.net USERNAME:PASSWD
But in transport I had this:
example.com smtp:[smtp.sendgrid.com]:587
The difference is .net versus .com.
Changed it to .net and works!

autoreply program sendmail giving "DSN: Service unavailable" error

I am trying to use an auto reply program for one of the users.
It works fine when I have user email address defined in .forward file but it gives following error when I put it in script:
Jun 28 12:25:38 localhost sendmail[5210]: s5SJPFkN005208: to="|/home/alpha/autoreply.pl", ctladdr=alpha#localhost (501/501), delay=00:00:10, xdelay=00:00:00, mailer=prog, pri=60446, dsn=5.0.0, stat=Service unavailable
Jun 28 12:25:38 localhost sendmail[5210]: s5SJPFkN005208: s5SJPckN005210: DSN: Service unavailable
Do I have have make any changes in sendmail configs (i.e. symbolic link etc)?
Thanks.
1.Have you checked problems mentioned in sendmail FAQ?
Sendmail-FAQ-3.11: Why can't my users forward their mail to a program?
2. On most linuxes sendmail uses procmail as local mailer program.
You may try to execute your script from ~/.procmailrc of the user.
The issue was /etc/smrsh did not have symbolic link for perl which can be defined as
ln -s /usr/bin/perl /etc/smrsh/perl

Can't relay mail server to SendGrid

I've gone through the SendGrid integration instructions for Exim (http://docs.sendgrid.com/documentation/get-started/integrate/examples/exim/)
However, any email I send now is not being sent. Its all stuck in the queue. I looked for the log file for a message I'm trying to send and this is what I get:
2011-10-12 19:49:14 cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1RE9U2-0007Qg-20
+++ 1RE9U2-0007Qg-20 has not completed +++
2011-10-12 19:49:14 1RE9U2-0007Qg-20 <= email#example.com H=localhost [127.0.0.1] P=esmtpa A=dovecot_login:email#example.com S=731 id=20111012194913.13697j8jpb4heop5#example.com T="Test"
2011-10-12 19:49:14 1RE9U2-0007Qg-20 == email#gmail.com R=send_via_sendgrid T=sendgrid_smtp defer (-53): retry time not reached for any host
I've had the support rebuild the exim db, but that hasn't helped. I'm thinking it has to do with the fact that its using the dovecot login instead of the sendgrid login which is added after it. How do I make it use the sendgrid login info? Thanks!!
If you aren't using your SG credentials you're going to run into authentification issues.
Try the following to make sure you are using the correct credentials:
*:sendgridusername:sendgridpassword