• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Postfix startet nicht von selber

feuerteufel

Hacker
Hallo zusammen,
habe seit einigen Tagen openSuse 12.2 installiert.
Mit Hilfe des Forums habe ich so manchen Fehler beheben können.

Jetzt habe ich allerdings das Problem, das Postfix meint, nicht selber zu starten. Über den Punkt System Start Stop Dienste per Webmin, ist eingetragen, das er beim Starten des Rechner laufen soll.
Klicke ich dann dort auf Starten, macht er den Job artig wie er es soll?

Anbei der Skript von Postfix
Code:
#! /bin/sh
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

MASTER_BIN=/usr/lib/postfix/master
PIDFILE=/var/spool/postfix/pid/master.pid
POSTFIX_BIN=/usr/sbin/postfix
POSTCONF=/usr/sbin/postconf
OPENSLP_BIN=/usr/bin/slptool
PF_CHROOT=/var/spool/postfix
print_defaults=/usr/bin/my_print_defaults

test -x $POSTFIX_BIN || exit 5
test -x $MASTER_BIN || exit 5
test -f /etc/sysconfig/postfix && . /etc/sysconfig/postfix

warn_user(){
  tput bold
  echo -e "\t*** WARNING ***"
  echo -e $1
  echo -e "\t*** WARNING ***"
  tput sgr0
}

cond_slp() {
    cmd=$1
    PIFACES=$($POSTCONF -h inet_interfaces|sed -e 's/\(127.0.0.1\|::1\|[[:space:]]\)//g')
    PSERVICES=$(grep -E '^smtp.*smtpd' /etc/postfix/master.cf| cut -d" " -f1)
    if [ -n "${POSTFIX_REGISTER_SLP/[yY][Ee][Ss]/}" ]; then
	return
    fi
    if [ -x $OPENSLP_BIN -a -n "$PIFACES" ]; then
	FQHN=$($POSTCONF -h myhostname)
	for srv in $PSERVICES; do
	    sport=$(sed -ne "/^$srv/Is/^$srv[[:space:]]\+\([0-9]\+\)\/tcp.*/\1/gp" /etc/services)
	    if [ -n "$sport" ]; then
		$OPENSLP_BIN $cmd service:$srv://$FQHN:$sport > /dev/null 2>&1
	    fi
	done
    fi
}

chk_mysql_sock(){
  if [ -n "$($print_defaults mysqld)" ]; then
    MYSQL_SOCKET=$($print_defaults mysqld | grep -e '--socket[[:blank:]=]' | awk -F"=" '{print $2}')
    MYSQL_SOCKET_DIR=$(dirname $MYSQL_SOCKET)
    CHR_MYSQL_SOCKET=${PF_CHROOT}${MYSQL_SOCKET}
    CHR_MYSQL_SOCKET_DIR=$(dirname $CHR_MYSQL_SOCKET)
    if [ -S $MYSQL_SOCKET ]; then
	if [ -d $CHR_MYSQL_SOCKET_DIR ]; then
	  if grep $CHR_MYSQL_SOCKET_DIR /proc/mounts &> /dev/null; then
		RET=0
	  else
		RET=8
	  fi
	else
	  RET=4
	fi
    else
	RET=2
    fi
  else
    RET=1
  fi
  return $RET
}

chk_sasl_sock(){
  SASL_SOCKET=/var/run/sasl2/mux
  SASL_SOCKET_DIR=$(dirname $SASL_SOCKET)
  CHR_SASL_SOCKET=${PF_CHROOT}${SASL_SOCKET}
  CHR_SASL_SOCKET_DIR=$(dirname $CHR_SASL_SOCKET)
  if  [ -S $SASL_SOCKET ]; then
    if [ -d $CHR_SASL_SOCKET_DIR ]; then
      if grep $CHR_SASL_SOCKET_DIR /proc/mounts &> /dev/null; then
        RET=0
      else
        RET=4
      fi
    else
      RET=2
    fi
  else
    RET=1
  fi
  return $RET
}

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num><num>
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

# First reset status of this service
rc_reset

# Return values acc. to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running
# 
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signalling is not supported) are
# considered a success.

case "$1" in
    start)
        echo -n "Starting mail service (Postfix)"
	if [ "$(echo "$POSTFIX_UPDATE_CHROOT_JAIL" | tr 'A-Z' 'a-z' )" != "no" ]; then
	  if [ "$(echo "$POSTFIX_MYSQL_CONN" | tr 'A-Z' 'a-z' )" == "socket" -a \
		"$(echo "$POSTFIX_WITH_MYSQL" | tr 'A-Z' 'a-z' )" != "no" ]; then
		chk_mysql_sock
		case $? in
		  1)
warn_user "\t/etc/my.cnf does not exist!!\n\
\tThis should not happen!\n\
\tPlease check if postfix-mysql is installed and check for package mysql."
		  rc_failed 5; rc_status -v; rc_exit;
		;;
		  2)
warn_user "\tMySQL not started\n\
\tPlease check if MySQL is started on boot"
		  rc_failed 7; rc_status -v; rc_exit;
		;;
		  4)
warn_user "\t$CHR_MYSQL_SOCKET_DIR does not exist!!\n\
\tThis should not happen!\n\
\tPlease run SuSEconfig."
		  rc_failed 6; rc_status -v; rc_exit;
		;;
		  8)
		  /bin/mount -o bind $MYSQL_SOCKET_DIR $CHR_MYSQL_SOCKET_DIR &> /dev/null
		  [ $? -ne 0 ] && {
		    echo -n " ... can not mount $MYSQL_SOCKET_DIR to $CHR_MYSQL_SOCKET_DIR"
		    rc_failed 1; rc_status -v; rc_exit;
		  }
		;;
		esac
	  fi
	  if [ "$(echo "$POSTFIX_SMTP_AUTH_SERVER" | tr 'A-Z' 'a-z' )" != "no" ]; then
		chk_sasl_sock
		case $? in
		  1)
warn_user "\tsaslauthd not started\n\
\tPlease check if saslauthd is started on boot"
		  rc_failed 7; rc_status -v; rc_exit;
		;;
		  2)
warn_user "\t$CHR_SASL_SOCKET_DIR does not exist!!\n\
\tThis should not happen!\n\
\tPlease run SuSEconfig."
		  rc_failed 6; rc_status -v; rc_exit;
		;;
		  4)
		  /bin/mount -o bind $SASL_SOCKET_DIR $CHR_SASL_SOCKET_DIR &> /dev/null
		  [ $? -ne 0 ] && {
		    echo -n " ... can not mount $SASL_SOCKET_DIR to $SASL_SOCKET_DIR"
		    rc_failed 1; rc_status -v; rc_exit;
		  }
		;;
		esac
	  fi
	fi
        ## Start daemon with startproc(8). If this fails
        ## the echo return value is set appropriate.

	if ! checkproc -p $PIDFILE $MASTER_BIN; then
		/etc/postfix/system/update_postmaps
        	$POSTFIX_BIN start > /dev/null 2>&1
	else
		rc_reset
	fi

	# Remember status and be verbose
	rc_status -v

        ( i=60
        # waiting for qmgr
        while [ -z "$(pidof qmgr)" -a $i -gt 0 ]; do
            i=$(( $i - 1 ))
            sleep 1
        done
        $POSTFIX_BIN flush ) > /dev/null 2>&1 &
	cond_slp "register" &
        ;;
    stop)
        echo -n "Shutting down mail service (Postfix)"

       	$POSTFIX_BIN stop > /dev/null 2>&1

	# Remember status and be verbose
	cond_slp "deregister" &
	rc_status -v
        ;;
    try-restart)
	## Stop the service and if this succeeds (i.e. the 
	## service was running before), start it again.
	## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
	$0 status >/dev/null &&  $0 restart

	# Remember status and be quiet
	rc_status
	;;
    restart)
	## Stop the service and regardless of whether it was
	## running or not, start it again.
	$0 stop
	$0 start

	# Remember status and be quiet
	rc_status
        ;;
    force-reload)

	echo -n "Reload mail service (Postfix)"

	/etc/postfix/system/update_postmaps
	$POSTFIX_BIN reload > /dev/null 2>&1
	rc_status -v
	POSTFIX_BIN flush > /dev/null 2>&1

	## Otherwise:
	#$0 stop  &&  $0 start
	#rc_status
	;;
    reload)
        echo -n "Reload mail service (Postfix)"

	/etc/postfix/system/update_postmaps
	$POSTFIX_BIN reload > /dev/null 2>&1
	rc_status -v
	$POSTFIX_BIN flush > /dev/null 2>&1
	
	## Otherwise if it does not support reload:
	#rc_failed 3
	#rc_status -v
        ;;
    status)
        echo -n "Checking for service Postfix: "
	## Check status with checkproc(8), if process is running
	## checkproc will return with exit status 0.

	# Status has a slightly different for the status command:
	# 0 - service running
	# 1 - service dead, but /var/run/  pid  file exists
	# 2 - service dead, but /var/lock/ lock file exists
	# 3 - service not running

	# NOTE: checkproc returns LSB compliant status values.
        /sbin/checkproc -p $PIDFILE $MASTER_BIN
	rc_status -v
        ;;
    *)
	echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
        exit 1
        ;;
esac
rc_exit

Was muss ich noch wo ändern ???

gruß thomas
 

admine

Ultimate Guru
Du nutzt "systemd"?
Dann das:
Code:
systemctl status postfix.service
Code:
systemctl enable postfix.service
Code:
systemctl start postfix.service
Code:
systemctl status postfix.service
Wie schaun die Ausgaben aus?

EDIT: und Thread verschoben ;)
 
OP
feuerteufel

feuerteufel

Hacker
admine schrieb:
Du nutzt "systemd"?
Dann das:
zu 1
Code:
systemctl status postfix.service
zu 2
Code:
systemctl enable postfix.service
zu 3
Code:
systemctl start postfix.service
zu 4
Code:
systemctl status postfix.service
Wie schaun die Ausgaben aus?

EDIT: und Thread verschoben ;)


zu1
Code:
server-neu:/home/test #     systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
	  Loaded: loaded (/lib/systemd/system/postfix.service; enabled)
	  Active: active (running) since Mon, 05 Nov 2012 07:31:46 +0100; 10h ago
	 Process: 3865 ExecStartPost=/etc/postfix/system/cond_slp register (code=exited, status=0/SUCCESS)
	 Process: 3863 ExecStartPost=/etc/postfix/system/wait_qmgr 60 (code=exited, status=0/SUCCESS)
	 Process: 3551 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
	 Process: 3549 ExecStartPre=/etc/postfix/system/update_postmaps (code=exited, status=0/SUCCESS)
	 Process: 3547 ExecStartPre=/etc/postfix/system/update_chroot (code=exited, status=0/SUCCESS)
	 Process: 3546 ExecStartPre=/bin/echo Starting mail service (Postfix) (code=exited, status=0/SUCCESS)
	Main PID: 3862 (master)
	  CGroup: name=systemd:/system/postfix.service
		  ├  3862 /usr/lib/postfix/master
		  ├  3885 qmgr -l -t fifo -u
		  ├ 16793 pickup -l -t fifo -u
		  ├ 17440 smtpd -n smtp -t inet -u -o stress=
		  ├ 17441 proxymap -t unix -u
		  ├ 17442 trivial-rewrite -n rewrite -t unix -u
		  ├ 17444 cleanup -z -t unix -u
		  └ 17445 local -t unix

Nov 05 17:50:06 server-neu postfix/cleanup[17444]: nss-ldap: do_open: do_star...
Nov 05 17:50:06 server-neu postfix/cleanup[17444]: nss_ldap: could not search...
Nov 05 17:50:06 server-neu postfix/cleanup[17444]: nss-ldap: do_open: do_star...
Nov 05 17:50:06 server-neu postfix/cleanup[17444]: nss-ldap: do_open: do_star...
Nov 05 17:50:06 server-neu postfix/cleanup[17444]: nss_ldap: could not search...
Nov 05 17:50:06 server-neu postfix/pickup[16793]: D9AD63406A5: uid=0 from=<root>
Nov 05 17:50:06 server-neu postfix/cleanup[17444]: D9AD63406A5: message-id=<2...
Nov 05 17:50:06 server-neu postfix/qmgr[3885]: D9AD63406A5: from=<root@serve...)
Nov 05 17:50:12 server-neu postfix/local[17445]: D9AD63406A5: to=<root@serve...)
Nov 05 17:50:12 server-neu postfix/qmgr[3885]: D9AD63406A5: removed

zu 4
Code:
server-neu:/home/test #     systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
	  Loaded: loaded (/lib/systemd/system/postfix.service; enabled)
	  Active: active (running) since Mon, 05 Nov 2012 07:31:46 +0100; 10h ago
	Main PID: 3862 (master)
	  CGroup: name=systemd:/system/postfix.service
		  ├  3862 /usr/lib/postfix/master
		  ├  3885 qmgr -l -t fifo -u
		  ├ 16793 pickup -l -t fifo -u
		  ├ 17551 smtpd -n smtp -t inet -u -o stress=
		  ├ 17552 proxymap -t unix -u
		  ├ 17553 trivial-rewrite -n rewrite -t unix -u
		  ├ 17554 cleanup -z -t unix -u
		  └ 17555 local -t unix

Nov 05 17:52:09 server-neu postfix/cleanup[17554]: nss-ldap: do_open: do_start_tls failed:stat=-1
Nov 05 17:52:09 server-neu postfix/cleanup[17554]: nss_ldap: could not search LDAP server - Server is ...ble
Nov 05 17:52:09 server-neu postfix/cleanup[17554]: nss-ldap: do_open: do_start_tls failed:stat=-1
Nov 05 17:52:09 server-neu postfix/cleanup[17554]: nss-ldap: do_open: do_start_tls failed:stat=-1
Nov 05 17:52:09 server-neu postfix/cleanup[17554]: nss_ldap: could not search LDAP server - Server is ...ble
Nov 05 17:52:09 server-neu postfix/pickup[16793]: D134234070E: uid=0 from=<root>
Nov 05 17:52:09 server-neu postfix/cleanup[17554]: D134234070E: message-id=<20121105165209.D134234070E...de>
Nov 05 17:52:09 server-neu postfix/qmgr[3885]: D134234070E: from=<root@server-n.stoerkhome.de>, size=...ive)
Nov 05 17:52:45 server-neu postfix/local[17555]: D134234070E: to=<root@server-n.stoerkhome.de>, orig_t...N")
Nov 05 17:52:45 server-neu postfix/qmgr[3885]: D134234070E: removed

Und heute morgen hat mein System doch dann mich ärgern wollen und hat Postfix ohne zutun gestartet ...
Klasse wenn sie das nur durch das Eingeben und Nachfragen in einen Forum sich behebt.

gruß thomas
 
Oben