components/postfix/files/start-method
author akshay.kale@oracle.com <akshay.kale@oracle.com>
Fri, 14 Oct 2016 13:13:27 -0700
changeset 7112 dab9beb5bc49
parent 4153 cac8dc6507e3
permissions -rw-r--r--
24843178 Method of choosing ofports need to be improved in OVS
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4079
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     1
#!/usr/sbin/sh
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     2
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     3
# CDDL HEADER START
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     4
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     8
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    12
# and limitations under the License.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    13
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    19
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    20
# CDDL HEADER END
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    21
#
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    22
# Copyright (c) 1991, 2015, Oracle and/or its affiliates. All rights reserved.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    23
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    24
. /lib/svc/share/smf_include.sh
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    25
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    26
SWITCH_FMRI=svc:/system/name-service/switch:default
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    27
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    28
tweak_aliases()
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    29
{
4153
cac8dc6507e3 20918093 postfix manifests & start method need tweaks
John Beck <John.Beck@Oracle.COM>
parents: 4079
diff changeset
    30
	aliasprop=$(/usr/bin/svcprop -p config/alias $SWITCH_FMRI 2>/dev/null)
4079
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    31
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    32
	# Check the alias configuration. Per
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    33
	# http://www.postfix.org/postconf.5.html
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    34
	#    On systems with NIS, the default is to search the local alias
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    35
	#    database, then the NIS alias database. 
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    36
	# All Solaris systems ship "with NIS", but unless NIS is configured for
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    37
	# aliases, this will cause problems, so check and tweak the default if
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    38
	# NIS is not configured.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    39
	alias_maps=$(/usr/sbin/postconf -h alias_maps)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    40
	if [[ $alias_maps == "hash:/etc/mail/aliases, nis:mail.aliases" ]]; then
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    41
		# We have the default Postfix setting.
4153
cac8dc6507e3 20918093 postfix manifests & start method need tweaks
John Beck <John.Beck@Oracle.COM>
parents: 4079
diff changeset
    42
		if [[ "$aliasprop" == "${aliasprop/nis}" ]]; then
4079
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    43
			# NIS is not configured, so change the Postfix setting.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    44
			alias_maps="hash:/etc/mail/aliases"
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    45
			/usr/sbin/postconf alias_maps=$alias_maps
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    46
		fi
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    47
	fi
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    48
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    49
	# Check for LDAP: if configured via the switch, then (if needed)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    50
	# create $LDAP_ALIASES and configure in alias_maps.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    51
	LDAP_ALIASES=/etc/postfix/ldap-aliases.cf
4153
cac8dc6507e3 20918093 postfix manifests & start method need tweaks
John Beck <John.Beck@Oracle.COM>
parents: 4079
diff changeset
    52
	if [[ $aliasprop != ${aliasprop/ldap} ]]; then
4079
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    53
		# LDAP is configured for aliases.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    54
		if [[ ! -f $LDAP_ALIASES ]]; then
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    55
			# $LDAP_ALIASES does not exist yet, so create it.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    56
			servers=$(/usr/sbin/ldapclient list | \
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    57
			    grep NS_LDAP_SERVERS | \
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    58
			    sed -e 's/^.*=//' -e 's/,//g')
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    59
        		basedn=$(/usr/sbin/ldapclient list | \
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    60
			    grep NS_LDAP_SEARCH_BASEDN | sed -e 's/^.*= //')
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    61
			echo "server_host = $servers" > $LDAP_ALIASES
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    62
			echo "search_base = $basedn" >> $LDAP_ALIASES
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    63
			echo "query_filter = mail=%s" >> $LDAP_ALIASES
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    64
			echo "result_attribute = mgrpRFC822MailMember" >> \
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    65
			    $LDAP_ALIASES
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    66
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    67
		fi
4153
cac8dc6507e3 20918093 postfix manifests & start method need tweaks
John Beck <John.Beck@Oracle.COM>
parents: 4079
diff changeset
    68
		if [[ "$alias_maps" == "${alias_maps/ldap:}" ]]; then
4079
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    69
			# No "ldap:" entry yet in alias_maps, so add one.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    70
			/usr/sbin/postconf \
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    71
			    alias_maps="$alias_maps, ldap:$LDAP_ALIASES"
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    72
		fi
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    73
	fi
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    74
}
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    75
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    76
# First, make sure we have a valid domain name.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    77
myhostname=$(/usr/bin/hostname)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    78
case $myhostname in
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    79
*.*)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    80
	# Fully qualified: we're set.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    81
	;;
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    82
*)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    83
	# Unqualified; fall back to postconf.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    84
	mydomain=$(/usr/sbin/postconf -h mydomain)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    85
	case $mydomain in
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    86
	*.*)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    87
		# Fully qualified: we're set.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    88
		;;
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    89
	localdomain)
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    90
		echo "Domain name cannot be determined."
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    91
		echo "Either set hostname to a fully-qualified value,"
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    92
		echo "or run '/usr/sbin/postconf mydomain=YOUR.DOMAIN'."
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    93
		exit $SMF_EXIT_ERR_CONFIG
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    94
		;;
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    95
	esac
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    96
esac
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    97
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    98
# Second, tweak aliases for NIS and LDAP as needed.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    99
auto=`/usr/bin/svcprop -c -p config/automatic $SMF_FMRI 2>/dev/null`
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   100
if [[ $auto == true ]]; then
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   101
	tweak_aliases
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   102
fi
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   103
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   104
# Finally, start the daemon.
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   105
/usr/sbin/postfix start
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   106
4aab0107366d PSARC 2014/382 Postfix
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
   107
exit 0