{"id":369,"date":"2012-07-11T13:41:30","date_gmt":"2012-07-11T13:41:30","guid":{"rendered":""},"modified":"2016-01-11T12:46:35","modified_gmt":"2016-01-11T11:46:35","slug":"postfix-compilation","status":"publish","type":"post","link":"https:\/\/drfugazi.eu.org\/en\/postfix-compilation\/","title":{"rendered":"Postfix &#8211; compilation"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/drfugazi.eu.org\/wp-content\/uploads\/2012\/07\/mysza.gif\" data-rel=\"lightbox-gallery-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"550\" data-permalink=\"https:\/\/drfugazi.eu.org\/en\/postfix-compilation\/mysza\/\" data-orig-file=\"https:\/\/i0.wp.com\/drfugazi.eu.org\/wp-content\/uploads\/2012\/07\/mysza.gif?fit=130%2C91&amp;ssl=1\" data-orig-size=\"130,91\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mysza\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/drfugazi.eu.org\/wp-content\/uploads\/2012\/07\/mysza.gif?fit=130%2C91&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/drfugazi.eu.org\/wp-content\/uploads\/2012\/07\/mysza.gif?fit=130%2C91&amp;ssl=1\" class=\"alignleft size-full wp-image-550\" src=\"https:\/\/i0.wp.com\/drfugazi.eu.org\/wp-content\/uploads\/2012\/07\/mysza.gif?resize=130%2C91\" alt=\"Mysza\" width=\"130\" height=\"91\" data-recalc-dims=\"1\" \/><\/a>Postfix does not have a <code>configure<\/code> script, so you need to add proper paths and libraries when you creating Makefiles (<code>make makefiles<\/code>). I must admit, that Postfix code is one of the least problematic code to compile on differents systems. To make my compilations reproducible, I wrote a script and set proper options for compilation.<br \/>\n<!--more--><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n#!\/bin\/sh\r\n#\r\n\r\n# for GCC:\r\n#CC=gcc\r\n#CFLAGS=&quot;-O2 -mcpu=v9&quot;\r\n#MAKE=gmake\r\n#\r\n# for Sun Studio\r\nCC=cc\r\nCXX=CC\r\nCFLAGS=&quot;-fast -xautopar&quot;\r\nCXXFLAGS=$CFLAGS\r\nCPPFLAGS=&quot;-I\/usr\/local\/include&quot;\r\nLDFLAGS=&quot;-L\/usr\/local\/lib -R\/usr\/local\/lib&quot;\r\n#LDFLAGS=&quot;-L\/usr\/local\/lib -R\/usr\/local\/lib -L\/usr\/ucblib -R\/usr\/ucblib&quot;\r\n#LIBS=\r\nMAKE=dmake\r\n#DMAKE_MODE=serial\r\n\r\nexport CC CFLAGS CPPFLAGS MAKE DMAKE_MODE\r\nexport CXX CXXFLAGS LDFLAGS LIBS\r\n\r\n# $CC -v\r\n$CC -V\r\nset|grep PATH\r\nset|grep FLAGS\r\n\r\nKAT=&quot;postfix&quot;\r\nVER=&quot;2.9.3&quot;\r\n\r\ncd $KAT-$VER\r\n\r\ntn=&quot;n&quot;\r\necho &quot;=============================================&quot;\r\necho &quot;$MAKE clean &#x5B;y|n] ?&quot;\r\nread tn\r\nif &#x5B; &quot;$tn&quot; = &quot;Y&quot; ] || &#x5B; &quot;$tn&quot; = &quot;y&quot; ]; then\r\n  $MAKE distclean || $MAKE realclean || $MAKE clean\r\n\r\n  rm -f config.status\r\n  rm -f config.log\r\nfi;\r\n\r\ntn=&quot;n&quot;\r\necho &quot;=============================================&quot;\r\necho &quot;$MAKE makefiles &#x5B;y|n] ?&quot;\r\nread tn\r\nif &#x5B; &quot;$tn&quot; = &quot;Y&quot; ] || &#x5B; &quot;$tn&quot; = &quot;y&quot; ]; then\r\n\t$MAKE makefiles CC=&quot;$CC $CFLAGS&quot; CCARGS=&quot;-DUSE_SASL_AUTH -DDEF_SASL_SERVER=\\&quot;dovecot\\&quot; -DHAS_SSL -DUSE_TLS -I\/usr\/local\/ssl\/include -DHAS_LDAP -I\/usr\/local\/openldap\/include -DHAS_DB -I\/usr\/local\/BerkeleyDB.5.1\/include -DHAS_PCRE -I\/usr\/local\/include&quot; AUXLIBS=&quot;-R\/usr\/local\/ssl\/lib -L\/usr\/local\/ssl\/lib -lssl -lcrypto -R\/usr\/local\/openldap\/lib -L\/usr\/local\/openldap\/lib -lldap -R\/usr\/local\/openldap\/lib -L\/usr\/local\/openldap\/lib -llber -R\/usr\/local\/BerkeleyDB.5.1\/lib -L\/usr\/local\/BerkeleyDB.5.1\/lib -ldb -L\/usr\/local\/lib -R\/usr\/local\/lib -lpcre&quot;\r\nfi;\r\n\r\ntn=&quot;n&quot;\r\necho &quot;=============================================&quot;\r\necho &quot;$MAKE &#x5B;y|n] ?&quot;\r\nread tn\r\nif &#x5B; &quot;$tn&quot; = &quot;Y&quot; ] || &#x5B; &quot;$tn&quot; = &quot;y&quot; ]; then\r\n  $MAKE &amp;&amp; echo &quot;Compilation successful&quot;\r\nfi;\r\n<\/pre>\n<p>After unpacking sources downloaded from <a href=\"ftp:\/\/ftp.porcupine.org\/mirrors\/postfix-release\/index.html\">Postfix site<\/a>, I run a script:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n.\/drf_postfix-2.9.3_conf\r\n\r\ncc: Sun C 5.10 SunOS_sparc 2009\/06\/03\r\nusage: cc &#x5B; options] files.  Use 'cc -flags' for details\r\nMANPATH=\/usr\/local\/share\/man:\/usr\/local\/man:\/usr\/share\/man\r\nPATH=\/usr\/local\/bin:\/usr\/bin:\/usr\/ccs\/bin\r\nCFLAGS=-fast -xautopar\r\nCPPFLAGS=-I\/usr\/local\/include\r\nCXXFLAGS=-fast -xautopar\r\nLDFLAGS=-L\/usr\/local\/lib -R\/usr\/local\/lib\r\n=============================================\r\ndmake clean &#x5B;y|n] ?\r\nn\r\n=============================================\r\ndmake makefiles &#x5B;y|n] ?\r\ny\r\ndmake -f Makefile.in MAKELEVEL= Makefiles\r\n(echo &quot;# Do not edit -- this file documents how Postfix was built for your machine.&quot;; \/bin\/sh makedefs) &amp;gt;makedefs.tmp\r\nset +e; if cmp makedefs.tmp conf\/makedefs.out; then rm makedefs.tmp; \\\r\nelse mv makedefs.tmp conf\/makedefs.out; fi &amp;gt;\/dev\/null 2&amp;gt;\/dev\/null\r\nset -e; for i in src\/util src\/global src\/dns src\/tls src\/xsasl src\/milter src\/master  src\/postfix src\/fsstone src\/smtpstone  src\/sendmail src\/error src\/pickup src\/cleanup src\/smtpd src\/local  src\/trivial-rewrite src\/qmgr src\/oqmgr src\/smtp src\/bounce  src\/pipe src\/showq src\/postalias src\/postcat src\/postconf src\/postdrop  src\/postkick src\/postlock src\/postlog src\/postmap src\/postqueue  src\/postsuper src\/qmqpd src\/spawn src\/flush src\/verify  src\/virtual src\/proxymap src\/anvil src\/scache src\/discard src\/tlsmgr  src\/postmulti src\/postscreen src\/dnsblog src\/tlsproxy; do \\\r\n (set -e; echo &quot;&#x5B;$i]&quot;; cd $i; rm -f Makefile; \\\r\n dmake -f Makefile.in Makefile MAKELEVEL=) || exit 1; \\\r\ndone;\r\n...\r\n<\/pre>\n<p>Compilation:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">dmake &#x5B;y|n] ?\r\ny\r\nrm -f libexec\/post-install &amp;&amp; ln -f conf\/post-install libexec\/post-install\r\nrm -f libexec\/postfix-files &amp;&amp; ln -f conf\/postfix-files libexec\/postfix-files\r\nrm -f libexec\/postfix-script &amp;&amp; ln -f conf\/postfix-script libexec\/postfix-script\r\nrm -f libexec\/postfix-wrapper &amp;&amp; ln -f conf\/postfix-wrapper libexec\/postfix-wrapper\r\nrm -f libexec\/main.cf &amp;&amp; ln -f conf\/main.cf libexec\/main.cf\r\nrm -f libexec\/master.cf &amp;&amp; ln -f conf\/master.cf libexec\/master.cf\r\n...\r\n\r\ncc -fast -xautopar -DUSE_SASL_AUTH -DDEF_SASL_SERVER=&quot;dovecot&quot; -DHAS_SSL -DUSE_TLS -I\/usr\/local\/ssl\/include -DHAS_LDAP -I\/usr\/local\/openldap\/include -DHAS_DB -I\/usr\/local\/BerkeleyDB.5.1\/include -DHAS_PCRE -I\/usr\/local\/include -Dstrcasecmp=fix_strcasecmp \t\t  -Dstrncasecmp=fix_strncasecmp -g -O -I. -I..\/..\/include -DSUNOS5 -o tlsproxy tlsproxy.o tlsproxy_state.o ..\/..\/lib\/libtls.a ..\/..\/lib\/libmaster.a ..\/..\/lib\/libglobal.a  ..\/..\/lib\/libutil.a -R\/usr\/local\/ssl\/lib -L\/usr\/local\/ssl\/lib -lssl -lcrypto -R\/usr\/local\/openldap\/lib -L\/usr\/local\/openldap\/lib -lldap -R\/usr\/local\/openldap\/lib -L\/usr\/local\/openldap\/lib -llber -R\/usr\/local\/BerkeleyDB.5.1\/lib -L\/usr\/local\/BerkeleyDB.5.1\/lib -ldb -L\/usr\/local\/lib -R\/usr\/local\/lib -lpcre -lresolv -lsocket -lnsl\r\ncp tlsproxy ..\/..\/libexec\r\nCompilation successful\r\n<\/pre>\n<p>Installation after <code>su<\/code> root or <code>sudo<\/code>, but when you already have Postfix installed, you can do <code>make upgrade<\/code> to the same directory. You can upgrade Postfix without shutting down, but I always do a restart Postfix after upgrade.<\/p>","protected":false},"excerpt":{"rendered":"<p>Sorry, this entry is only available in Polish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.Postfixa kompiluje&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[123,110],"tags":[16,22,34,11],"jetpack_publicize_connections":[],"acf":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7M9Tz-5X","jetpack-related-posts":[{"id":265,"url":"https:\/\/drfugazi.eu.org\/en\/","url_meta":{"origin":369,"position":0},"title":"pkg-config-0.25","author":"drfugazi","date":"Friday May 20th, 2011","format":false,"excerpt":"pkg-config jest narz\u0119dziem wspomagaj\u0105cym kompilowanie aplikacji i bibliotek. Pomaga wstawi\u0107 odpowiednie opcje kompilatora do linii polece\u0144, wi\u0119c aplikacja mo\u017ce u\u017cy\u0107 np. gcc -o test test.c `pkg-config --libs --cflags glib-2.0` zamiast sztywno wstawia\u0107 \u015bcie\u017ck\u0119 do lokalizacji gdzie mo\u017cna znale\u017a\u0107 glib (lub inne biblioteki). Program jest elastyczny, wi\u0119c mo\u017ce r\u00f3wnie\u017c s\u0142u\u017cy\u0107 do\u2026","rel":"","context":"In \"Compilation\"","block_context":{"text":"Compilation","link":"https:\/\/drfugazi.eu.org\/en\/tag\/kompilacja\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":166,"url":"https:\/\/drfugazi.eu.org\/en\/gnarwl-35\/","url_meta":{"origin":369,"position":1},"title":"gnarwl-3.5","author":"drfugazi","date":"Thursday February 19th, 2009","format":false,"excerpt":"GNARWL jest autoresponderem dzia\u0142aj\u0105cym po stronie serwera pocztowego, jest to odpowiednik programu Vacation wzbogacony m. in. o wsp\u00f3\u0142prac\u0119 z katalogiem LDAP. Wi\u0119cej informacji o programie oraz jego zastosowaniu mo\u017cna znale\u017a\u0107 na stronie projektu: http:\/\/www.onyxbits.de\/gnarwl. Ja nie b\u0119d\u0119 si\u0119 nad tym rozwodzi\u0142, skupi\u0119 si\u0119 na kompilacji i instalacji tego oprogramowania pod\u2026","rel":"","context":"In \"Compilation\"","block_context":{"text":"Compilation","link":"https:\/\/drfugazi.eu.org\/en\/tag\/kompilacja\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":351,"url":"https:\/\/drfugazi.eu.org\/en\/clamav-2\/","url_meta":{"origin":369,"position":2},"title":"ClamAV","author":"drfugazi","date":"Thursday June 14th, 2012","format":false,"excerpt":"Clam AntiVirus is an open source (GPL) anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail gateways. It provides a number of utilities including a flexible and scalable multi-threaded daemon, a command line scanner and advanced tool for automatic database updates. The core of the package is an\u2026","rel":"","context":"In &quot;Mail system&quot;","block_context":{"text":"Mail system","link":"https:\/\/drfugazi.eu.org\/en\/category\/mail-system\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":243,"url":"https:\/\/drfugazi.eu.org\/en\/","url_meta":{"origin":369,"position":3},"title":"tar-1.26","author":"drfugazi","date":"Monday May 16th, 2011","format":false,"excerpt":"Solarisowy tar ma troch\u0119 brak\u00f3w w stosunku do programu GNU Tar. Na przyk\u0142ad nie rozpoznaje skompresowanych archiw\u00f3w. Warto wi\u0119c zainstalowa\u0107 jego odpowiednika GNU. Ja dla rozr\u00f3\u017cnienia dodaj\u0119 do GNU Tar przedrostek 'g' (opcja --program-prefix=g przy kompilacji). Konfiguracja i kompilacja z u\u017cyciem skryptu (w za\u0142\u0105czeniu):","rel":"","context":"In \"Compilation\"","block_context":{"text":"Compilation","link":"https:\/\/drfugazi.eu.org\/en\/tag\/kompilacja\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":366,"url":"https:\/\/drfugazi.eu.org\/en\/pigeonhole-compilation\/","url_meta":{"origin":369,"position":4},"title":"Pigeonhole &#8211; compilation and installation","author":"drfugazi","date":"Friday July  6th, 2012","format":false,"excerpt":"You can download Pigeonhole for Dovecot from http:\/\/pigeonhole.dovecot.org\/download.html % wget http:\/\/www.rename-it.nl\/dovecot\/2.1\/dovecot-2.1-pigeonhole-0.3.1.tar.gz % tar -xf dovecot-2.1-pigeonhole-0.3.1.tar.gz This is my script to configure and compile Pigeonhole 0.3.1 for Dovecot 2.1","rel":"","context":"In &quot;Compilation&quot;","block_context":{"text":"Compilation","link":"https:\/\/drfugazi.eu.org\/en\/category\/compilation\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":258,"url":"https:\/\/drfugazi.eu.org\/en\/","url_meta":{"origin":369,"position":5},"title":"grep-2.7","author":"drfugazi","date":"Thursday May 19th, 2011","format":false,"excerpt":"Polecenie grep s\u0142u\u017cy do przeszukiwania pliku lub plik\u00f3w wej\u015bciowych w poszukiwaniu wierszy zawieraj\u0105cych okre\u015blony wzorzec. Domy\u015blnie grep wypisuje pasuj\u0105ce wiersze na wyj\u015bcie standardowe. Poni\u017cej zapis sesji konfiguracji i kompilacji programu grep 2.7. Skrypt w za\u0142\u0105czeniu. soft@wega:~\/grep% .\/drf_grep-2.7_conf cc: Sun C 5.10 SunOS_sparc 2009\/06\/03 usage: cc [ options] files. Use 'cc\u2026","rel":"","context":"In \"Grep\"","block_context":{"text":"Grep","link":"https:\/\/drfugazi.eu.org\/en\/tag\/grep\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts\/369"}],"collection":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/comments?post=369"}],"version-history":[{"count":3,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts\/369\/revisions"}],"predecessor-version":[{"id":551,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/posts\/369\/revisions\/551"}],"wp:attachment":[{"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/media?parent=369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/categories?post=369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/drfugazi.eu.org\/en\/wp-json\/wp\/v2\/tags?post=369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}