Search code examples
open-sourcemonitoringnagiospostfix-mta

how to give a specific name to an email address in postfix.?


i installed Nagios core on my system which sends me an email if some service goes into Critical/warning stage. everything is working fine. I have configures post-fix to send out an email and configured an email address in "sasl_passwd" file something like this "[smtp.gmail.com]:587 <email-id>:<password>". when i receive a mail about service stage it comes as a "Alert from <email-id>" now i want to change that i want an email to come as "Nagios alert" or something like that in mail subject rather than just <email-id> showing. How can i do that?


Solution

  • Alter your commands notify-host-by-email and notify-service-by-email. These commands are what sends the email notification. It pipes a message string to /bin/mail by default. It already includes the -s flag indicating the subject. So in order to overwrite the sender, we check man mail and determine that the flag is -r [from-addr]. So, you can change your commands from:

    # 'notify-host-by-email' command definition
    define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }
    
    # 'notify-service-by-email' command definition
    define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
        }
    

    To:

    # 'notify-host-by-email' command definition
    define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -r "[email protected]" -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }
    
    # 'notify-service-by-email' command definition
    define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -r "[email protected]" -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
        }
    

    Where [email protected] is your email address.

    Hope this helps.