# $Id: Portfile 59576 2009-10-17 09:51:44Z jmr@macports.org $

PortSystem  1.0

name            postfix
version         2.6.2
categories      mail
maintainers     nomaintainer
description     Fast and robust mail transfer agent
long_description    Postfix attempts to be fast, easy to administer, and \
            secure, while at the same time being \
            sendmail-compatible enough to not upset existing \
            users. It also offers QMQP and VERP support to let \
            Postfix act as delivery daemon for ezmlm-idx.
homepage        http://www.postfix.org/
platforms       darwin
checksums       md5     1f0edbd521d2b0473626f4d61e8bb4eb \
                sha1    a3b349df60bca947f3b94ff484b699d176777b4a \
                rmd160  a86c829c3c17746986a0ea013674b6bec49d74ea

master_sites    http://www.swissrave.ch/mirror/postfix-source/official/ \
    ftp://ftp.its.cz/MIRRORS/ftp.porcupine.org/mirrors/postfix-release/official/ \
    ftp://ftp.club-internet.fr/pub/mirrors/ftp.porcupine.org/postfix-release/official/

patchfiles     patch-sys_defs.h patch-mail_params.h patch-postfix-install

post-patch {
     eval reinplace "s|/etc/|${prefix}/etc/|g" \
          [glob ${worksrcpath}/man/man1/*] \
          [glob ${worksrcpath}/man/man5/*] \
          [glob ${worksrcpath}/man/man8/*]

     reinplace "s|__PREFIX|${prefix}|g" ${worksrcpath}/src/util/sys_defs.h
     reinplace "s|__PREFIX|${prefix}|g" ${worksrcpath}/src/global/mail_params.h

     reinplace "s|ls |/bin/ls |g" \
          ${worksrcpath}/conf/postfix-script

# Set main.cf default values
     reinplace "s|#default_privs|default_privs|g" \
          ${worksrcpath}/conf/main.cf
     reinplace "s|/etc/postfix/network_table|${prefix}/etc/postfix/network_table|g" \
          ${worksrcpath}/conf/main.cf
     reinplace "s|/etc/postfix/relay_recipients|${prefix}/etc/postfix_relay_recipients|g" \
          ${worksrcpath}/conf/main.cf
     reinplace "s|/etc/postfix/header_checks|${prefix}/etc/postfix/header_checks|g" \
          ${worksrcpath}/conf/main.cf
     reinplace "s|PATH=/bin:/usr/bin|PATH=${prefix}/bin:/bin:/usr/bin|g" \
          ${worksrcpath}/conf/main.cf
}

set CCARGS  -DNO_PCRE
set AUXLIBS "-L${prefix}/lib -R${prefix}/lib -L${prefix}/lib"
set pf_mail_owner "_postfix"
set pf_setgid_group "_postdrop"

# Beginning with Mac OS X 10.5, the user 'postfix' changed to '_postfix'
platform darwin 8 {
    global pf_mail_owner
    global pf_setgid_group
    set pf_mail_owner "postfix"
    set pf_setgid_group "postdrop"
}

platform darwin 10 {
    patchfiles-append nameser8_compat.diff
    set AUXLIBS     [concat ${AUXLIBS} -lresolv]
}

configure {
    system "cd ${worksrcpath} && make makefiles CCARGS=\"${CCARGS}\" AUXLIBS=\"${AUXLIBS}\""
}

build.target

startupitem.create      yes
startupitem.start       "${prefix}/sbin/${name} start"
startupitem.stop        "${prefix}/sbin/${name} stop"

destroot {
    destroot.keepdirs ${destroot}${prefix}/var/spool/postfix/public \
        ${destroot}${prefix}/var/spool/postfix/maildrop \
        ${destroot}${prefix}/var/lib/postfix
    system "cd ${worksrcpath} && /bin/sh postfix-install -non-interactive \
        install_root=${destroot} \
        config_directory=${prefix}/etc/postfix \
        queue_directory=${prefix}/var/spool/postfix \
        command_directory=${prefix}/sbin \
        daemon_directory=${prefix}/libexec/postfix \
        data_directory=${prefix}/var/lib/postfix \
        sendmail_path=${prefix}/sbin/sendmail \
        newaliases_path=${prefix}/bin/newaliases \
        mailq_path=${prefix}/bin/mailq \
        etc_directory=${prefix}/etc/postfix \
        share_directory=${prefix}/share/postfix \
        manpage_directory=${prefix}/share/man \
        sample_directory=${prefix}/share/postfix/sample \
        readme_directory=${prefix}/share/postfix/readme \
        mail_owner=${pf_mail_owner} \
        setgid_group=${pf_setgid_group}"

# This makes sure we don't overwrite user /etc files. This now breaks postfix
# "just working" on fresh installs.
# YOU MUST MOVE THE SAMPLE FILES TO THE CORRECT NAMESPACE.
# XXX unsure if this still an issue 07/07/05 yeled@

        file rename ${destroot}${prefix}/etc/postfix/main.cf \
            ${destroot}${prefix}/etc/postfix/main.cf.sample
        file rename ${destroot}${prefix}/etc/postfix/master.cf \
            ${destroot}${prefix}/etc/postfix/master.cf.sample
        file rename ${destroot}${prefix}/etc/postfix/aliases \
            ${destroot}${prefix}/etc/postfix/aliases.sample
}

pre-install {
        system "chown ${pf_mail_owner} ${destroot}${prefix}/var/spool/postfix/public/.turd_postfix"
}

post-install {
    # Tell the user about renaming the sample configuration files.
ui_msg "\n
To get postfix working, you need to copy the sample configuration
files and edit them (${prefix}/etc/postfix/*.sample).  You may also
want to turn off Apple's built-in MTA.  For example, on 10.4:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.postfix.master.plist
\n"
}

variant pcre description "add pcre support" {
    set CCARGS      [ldelete ${CCARGS} -DNO_PCRE]
    set CCARGS      [concat  ${CCARGS} -DHAS_PCRE -I${prefix}/include]
    set AUXLIBS     [concat ${AUXLIBS} -L${prefix}/lib -lpcre]
    depends_lib-append  port:pcre
}

variant tls description "add tls support via openssl" {
    depends_lib-append  port:openssl
    set CCARGS      [concat ${CCARGS} -DUSE_TLS -DHAS_SSL -I${prefix}/include]
    set AUXLIBS     [concat ${AUXLIBS} -lssl -lcrypto]
}

variant sasl description "add sasl support via cyrus-sasl2" {
    depends_lib-append  port:cyrus-sasl2
    set CCARGS      [concat ${CCARGS} -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I${prefix}/include/sasl]
    set AUXLIBS     [concat ${AUXLIBS} -lsasl2]
}

variant ldap description "add ldap support via openldap" {
    depends_lib-append  port:openldap
    set CCARGS      [concat ${CCARGS} -DHAS_LDAP]
    set AUXLIBS     [concat ${AUXLIBS} -lldap -llber]
}

variant mysql5  description "add mysql support via mysql5" {
    depends_lib-append path:bin/mysql_config5:mysql5
    set CCARGS      [concat ${CCARGS} -DHAS_MYSQL -I${prefix}/include/mysql5/mysql]
    set AUXLIBS     [concat ${AUXLIBS} -L${prefix}/lib/mysql5/mysql -lmysqlclient -lz -lm]
}

variant postgresql83 description "add postgresql support via postgresql83" {
    depends_lib-append port:postgresql83
    set CCARGS      [concat ${CCARGS} -DHAS_PGSQL -I${prefix}/include/postgresql83]
    set AUXLIBS     [concat ${AUXLIBS} -L${prefix}/lib/postgresql83 -lpq]
}

variant dovecot_sasl description "add Dovecot SASL support " {
    set CCARGS      [concat ${CCARGS} -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\\\\\\"dovecot\\\\\\"]
}
