GGuuiiddeelliinneess ffoorr PPaacckkaaggee BBuuiillddeerrss ------------------------------------------------------------------------------- PPuurrppoossee ooff tthhiiss ddooccuummeenntt This document has hints and tips for those who manage their own Postfix binary distribution for internal use, and for those who maintain Postfix binary distributions for general use. GGeenneerraall ddiissttrriibbuuttiioonnss:: pplleeaassee pprroovviiddee aa ssmmaallll ddeeffaauulltt mmaaiinn..ccff ffiillee The installed main.cf file must be small. PLEASE resist the temptation to list all parameters in the main.cf file. Postfix is supposed to be easy to configure. Listing all parameters in main.cf defeats the purpose. It is an invitation for hobbyists to make random changes without understanding what they do, and gets them into endless trouble. GGeenneerraall ddiissttrriibbuuttiioonnss:: pplleeaassee iinncclluuddee RREEAADDMMEE oorr HHTTMMLL ffiilleess Please provide the applicable README or HTML files. They are referenced by the Postfix manual pages and by other files. Without README or HTML files, Postfix will be difficult if not impossible to configure. PPoossttffiixx IInnssttaallllaattiioonn ppaarraammeetteerrss Postfix installation is controlled by a dozen installation parameters. See the postfix-install and post-install files for details. Most parameters have system-dependent default settings that are configurable at compile time, as described in the INSTALL file. PPrreeppaarriinngg aa pprree--bbuuiilltt ppaacckkaaggee ffoorr ddiissttrriibbuuttiioonn ttoo ootthheerr ssyysstteemmss You can build a Postfix package on a machine that does not have Postfix installed on it. All you need is Postfix source code and a compilation environment that is compatible with the target system. You can build a pre-built Postfix package as an unprivileged user. First compile Postfix. After successful compilation, execute: % mmaakkee ppaacckkaaggee With Postfix versions before 2.2 you must invoke the post-install script directly (% sshh ppoosstt--iinnssttaallll). You will be prompted for installation parameters. Specify an install_root directory other than /. The mail_owner and setgid_group installation parameter settings will be recorded in the main.cf file, but they won't take effect until the package is unpacked and installed on the destination machine. If you want to fully automate this process, specify all the non-default installation parameters on the command line: % mmaakkee nnoonn--iinntteerraaccttiivvee--ppaacckkaaggee iinnssttaallll__rroooott==//ssoommee//wwhheerree... With Postfix versions before 2.2 you must invoke the post-install script directly (% sshh ppoosstt--iinnssttaallll --nnoonn--iinntteerraaccttiivvee iinnssttaallll__rroooott......). With Postfix 3.0 and later, the command "make package name=value ..." will replace the string MAIL_VERSION in a configuration parameter value with the Postfix release version. Do not try to specify something like $mail_version on this command line. This produces inconsistent results with different versions of the make(1) command. BBeeggiinn SSeeccuurriittyy AAlleerrtt WWhheenn bbuuiillddiinngg aann aarrcchhiivvee ffoorr ddiissttrriibbuuttiioonn,, bbee ssuurree ttoo aarrcchhiivvee oonnllyy ffiilleess aanndd ssyymmbboolliicc lliinnkkss,, nnoott tthheeiirr ppaarreenntt ddiirreeccttoorriieess.. OOtthheerrwwiissee,, uunnppaacckkiinngg aa pprree--bbuuiilltt PPoossttffiixx ppaacckkaaggee mmaayy mmeessss uupp ppeerrmmiissssiioonn aanndd//oorr oowwnneerrsshhiipp ooff ssyysstteemm ddiirreeccttoorriieess ssuucchh aass // //eettcc //uussrr //uussrr//bbiinn //vvaarr //vvaarr//ssppooooll aanndd ssoo oonn.. TThhiiss iiss eessppeecciiaallllyy aann iissssuuee iiff yyoouu eexxeeccuutteedd ppoossttffiixx--iinnssttaallll ((sseeee aabboovvee)) aass aann uunnpprriivviilleeggeedd uusseerr.. EEnndd SSeeccuurriittyy AAlleerrtt Thus, to tar up the pre-built package, take the following steps: % cd INSTALL_ROOT % rm -f SOMEWHERE/outputfile % find . \! -type d -print | xargs tar rf SOMEWHERE/outputfile % gzip SOMEWHERE/outputfile This way you will not include any directories that might cause trouble upon extraction. IInnssttaalllliinngg aa pprree--bbuuiilltt PPoossttffiixx ppaacckkaaggee * To unpack a pre-built Postfix package, execute the equivalent of: # umask 022 # gzip -d