The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/sendmail#3baf116d7073be1d62a85ef5416e2cd6f672d538
		
			
				
	
	
		
			130 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| # Generate db and cf files if necessary. This used to be handled by
 | |
| # /etc/mail/Makefile.
 | |
| 
 | |
| teste() {
 | |
|   if ! test -e "$1"; then
 | |
|     echo "$1 doesn't exist"
 | |
|     exit 2
 | |
|   fi
 | |
| }
 | |
| 
 | |
| makedb() {
 | |
|   teste "${1%.db}"
 | |
| 
 | |
|   if [ -z "$SM_FORCE_DBREBUILD" ]; then
 | |
|     test "${1%.db}" -nt "$1" || return 0
 | |
|   fi
 | |
| 
 | |
|   if [ "$1" = userdb.db ]; then
 | |
|     makemap btree "$1" < "${1%.db}"
 | |
|   else
 | |
|     makemap hash "$1" < "${1%.db}"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| makealiasesdb() {
 | |
|   uptodate=1
 | |
| 
 | |
|   if [ -z "$SM_FORCE_DBREBUILD" ]; then
 | |
|     files=$(grep '^O AliasFile=' sendmail.cf |
 | |
|       while read a; do echo ${a#*=}; done)
 | |
| 
 | |
|     for a in $files; do
 | |
|       if [ "$a" = /etc/aliases ]; then
 | |
|         # /etc/aliases.db may be used by other MTA, make sure nothing
 | |
|         # has touched it since our last newaliases call
 | |
|         test "$a" -nt "${a}.db" ||
 | |
|           test aliasesdb-stamp -nt "${a}.db" ||
 | |
|           test aliasesdb-stamp -ot "${a}.db" || continue
 | |
|       else
 | |
|         test "$a" -nt "${a}.db" || continue
 | |
|       fi
 | |
| 
 | |
|       uptodate=0
 | |
|       break
 | |
|     done
 | |
|   else
 | |
|     uptodate=0
 | |
|   fi
 | |
| 
 | |
|   [ $uptodate = 1 ] && return 0
 | |
| 
 | |
|   # check if alternatives is configured to sendmail
 | |
|   if [ "$(readlink -e /usr/bin/newaliases)" = /usr/sbin/sendmail.sendmail ]
 | |
|   then
 | |
|     /usr/bin/newaliases > /dev/null
 | |
|     touch -r /etc/aliases.db aliasesdb-stamp 2> /dev/null
 | |
|   else
 | |
|     rm -f aliasesdb-stamp
 | |
|   fi
 | |
| }
 | |
| 
 | |
| makecf() {
 | |
|   mc=${1%.cf}.mc
 | |
| 
 | |
|   teste "$mc"
 | |
| 
 | |
|   if [ -z "$SM_FORCE_CFREBUILD" ]; then
 | |
|     test "$mc" -nt "$1" || return 0
 | |
|   fi
 | |
| 
 | |
|   if test -f /usr/share/sendmail-cf/m4/cf.m4; then
 | |
|     umask 022
 | |
|     [ -e "$1" ] && mv -f "$1" "$1".bak
 | |
|     m4 "$mc" > "$1"
 | |
|   else
 | |
|     echo "WARNING: '$mc' is modified. Please install package sendmail-cf to update your configuration."
 | |
|     exit 15
 | |
|   fi
 | |
| }
 | |
| 
 | |
| makeall() {
 | |
|   # These could be used by sendmail, but are not part of the default install.
 | |
|   # To use them you will have to generate your own sendmail.cf with
 | |
|   # FEATURE('whatever')
 | |
|   test -f bitdomain && makedb bitdomain.db
 | |
|   test -f uudomain && makedb uudomain.db
 | |
|   test -f genericstable && makedb genericstable.db
 | |
|   test -f userdb && makedb userdb.db
 | |
|   test -f authinfo && makedb authinfo.db
 | |
| 
 | |
|   makedb virtusertable.db
 | |
|   makedb access.db
 | |
|   makedb domaintable.db
 | |
|   makedb mailertable.db
 | |
| 
 | |
|   makecf sendmail.cf
 | |
|   makecf submit.cf
 | |
| }
 | |
| 
 | |
| cd /etc/mail || exit 1
 | |
| 
 | |
| [ $# -eq 0 ] && makeall
 | |
| 
 | |
| for target; do
 | |
|   case "$target" in
 | |
|     *.db)
 | |
|       makedb "$target"
 | |
|       ;;
 | |
|     *.cf)
 | |
|       makecf "$target"
 | |
|       ;;
 | |
|     all)
 | |
|       makeall
 | |
|       ;;
 | |
|     aliases)
 | |
|       makealiasesdb
 | |
|       ;;
 | |
|     clean)
 | |
|       rm -f *.db *~ aliasesdb-stamp
 | |
|       ;;
 | |
|     start|stop|restart)
 | |
|       service sendmail "$target"
 | |
|       ;;
 | |
|     *)
 | |
|       echo "Don't know how to make $target"
 | |
|       exit 2
 | |
|   esac
 | |
| done
 |