# $Id: Portfile 125738 2014-09-25 14:43:03Z mf2k@macports.org $ PortSystem 1.0 name sympa version 5.4.7 revision 2 categories mail license GPL-2 maintainers nomaintainer platforms darwin description Sympa - Mailing List Manager with LDAP support long_description An advanced perl-based mail list manager with a web interface \ that supports LDAP authentication and LDAP extraction of \ list subscribers and owners. homepage http://www.sympa.org master_sites http://www.sympa.org/distribution/ \ http://www.sympa.org/distribution/old/ checksums md5 74fb5b0c972919a2813cd6aca2d9224f default_variants +server patchfiles patch-configure.in \ patch-Makefile.in \ patch-sympa.generic \ patch-src_alias_manager.pl depends_lib path:bin/mysql_config5:mysql5 \ port:apache2 \ port:mod_fcgid \ port:openssl \ port:postfix \ port:p5.12-libwww-perl \ port:p5.12-archive-zip \ port:p5.12-convert-asn1 \ port:p5.12-pathtools \ port:p5.12-dbi \ port:p5.12-dbd-mysql \ port:p5.12-mailtools \ port:p5.12-io-stringy \ port:p5.12-mime-tools \ port:p5.12-mime-charset \ port:p5.12-mime-encwords \ port:p5.12-crypt-openssl-x509 \ port:p5.12-fcgi \ port:p5.12-libintl-perl \ port:p5.12-template-toolkit \ port:p5.12-crypt-ciphersaber \ port:p5.12-mhonarc \ port:p5.12-regexp-common \ port:p5.12-xml-libxml \ port:p5.12-io-socket-ssl \ port:p5.12-soap-lite \ port:p5.12-perl-ldap \ port:p5.12-html-format \ port:p5.12-html-stripscripts-parser configure.args --with-bindir=${prefix}/bin/${name} \ --with-sbindir=${prefix}/bin/${name} \ --with-libexecdir=${prefix}/libexec/${name} \ --with-libdir=${prefix}/lib/${name} \ \ --with-cgidir=${prefix}/share/${name}/cgi-bin \ --with-localedir=${prefix}/share/locale \ --with-scriptdir=${prefix}/share/${name}/script \ --with-sampledir=${prefix}/share/${name}/sample \ --with-docdir=${prefix}/share/doc/${name} \ --with-datadir=${prefix}/share/${name} \ \ --with-confdir=${prefix}/etc/${name} \ --with-etcdir=${prefix}/etc/${name} \ --with-initdir=${prefix}/share/${name} \ \ --with-expldir=${prefix}/var/${name}/expl \ --with-piddir=${prefix}/var/${name} \ --with-lockdir=${prefix}/var/${name}/lock \ --with-spooldir=${prefix}/var/${name}/spool \ \ --with-mandir=${prefix}/man \ --with-perl=${prefix}/bin/perl5.12 \ --with-openssl=${prefix}/bin/openssl \ \ --with-user=www \ --with-group=www \ --with-sendmail_aliases=${prefix}/etc/${name}/sympa_aliases \ --with-virtual_aliases=${prefix}/etc/${name}/sympa_virtual \ --with-newaliases=${prefix}/bin/newaliases \ --with-postmap=${prefix}/sbin/postmap variant postgresql { depends_lib-append port:p5.12-dbd-pg depends_lib-delete port:p5.12-dbd-mysql } variant server { # This variant doesn't do anything in this port, it only exists to trigger the server # variant in the mysql5 port. } # Create a startupitem to start/stop the server startupitem.create yes startupitem.start "${prefix}/share/${name}/sympa" startupitem.stop "${prefix}/share/${name}/sympa" pre-destroot { # Use sympa.generic startup script and fix paths reinplace "s|PATH=/usr/bin:/bin:/usr/sbin:/sbin|PATH=${prefix}/bin:${prefix}/sbin:/usr/bin:/bin:/usr/sbin:/sbin|g" \ "${worksrcpath}/src/etc/script/sympa.generic" reinplace "s|/dist/sympa/run|${prefix}/var/${name}|g" \ "${worksrcpath}/src/etc/script/sympa.generic" system "mv ${worksrcpath}/src/etc/script/sympa.generic ${worksrcpath}/src/etc/script/sympa" } post-destroot { # Flag wwsympa.fcgi as executable system "chmod ug+x ${destroot}${prefix}/share/sympa/cgi-bin/wwsympa.fcgi" # Create empty directories named in sympa.conf & wwsympa.conf not created by Sympa install xinstall -m 755 -d ${destroot}${prefix}/var/${name}/expl xinstall -m 755 -d ${destroot}${prefix}/var/log/${name} # Incoming spool directories xinstall -m 755 -d ${destroot}${prefix}/var/${name}/spool/msg xinstall -m 755 -d ${destroot}${prefix}/var/${name}/spool/bounce # Storage directories xinstall -m 755 -d ${destroot}${prefix}/var/${name}/arc xinstall -m 755 -d ${destroot}${prefix}/var/${name}/bounce # Create sympa.log and sympa_aliases files system "touch ${destroot}${prefix}/var/log/${name}/${name}.log" system "touch ${destroot}${prefix}/etc/${name}/sympa_aliases" system "chown www:www ${destroot}${prefix}/bin/${name}/*" system "chown www:www ${destroot}${prefix}/etc/${name}/*" # Fix alias_manager.pl since the alias_wrapper seems not to work reinplace "s|${prefix}/bin/${name}/aliaswrapper|${prefix}/bin/newaliases|g" \ "${destroot}${prefix}/bin/${name}/alias_manager.pl" # Keep these empty directories destroot.keepdirs \ ${destroot}${prefix}/var/${name}/expl \ ${destroot}${prefix}/var/log/${name} \ ${destroot}${prefix}/var/${name}/spool/msg \ ${destroot}${prefix}/var/${name}/spool/bounce \ ${destroot}${prefix}/var/${name}/arc \ ${destroot}${prefix}/var/${name}/bounce # Fix permissions for arc directory system "chown www:www ${destroot}${prefix}/var/${name}/arc" # Set sympa.conf variables (this file uses tabs as separators) reinplace "s|#openssl /usr/local/bin/openssl|openssl ${prefix}/bin/openssl|g" \ "${destroot}${prefix}/etc/sympa/sympa.conf" reinplace "s|#db_type mysql|db_type mysql|g" \ "${destroot}${prefix}/etc/sympa/sympa.conf" reinplace "s|#db_name sympa|db_name sympa|g" \ "${destroot}${prefix}/etc/sympa/sympa.conf" reinplace "s|#db_host localhost|db_host localhost|g" \ "${destroot}${prefix}/etc/sympa/sympa.conf" reinplace "s|#db_user sympa|db_user sympa|g" \ "${destroot}${prefix}/etc/sympa/sympa.conf" system "echo 'db_options mysql_socket=${prefix}/var/run/mysql5/mysqld.sock' >> ${destroot}${prefix}/etc/sympa/sympa.conf" # Set wwsympa.conf variables reinplace "s|${prefix}/arc|${prefix}/var/${name}/arc|g" \ "${destroot}${prefix}/etc/${name}/wwsympa.conf" reinplace "s|${prefix}/bounce|${prefix}/var/${name}/bounce|g" \ "${destroot}${prefix}/etc/${name}/wwsympa.conf" reinplace "s|/usr/bin/mhonarc|${prefix}/bin/mhonarc|g" \ "${destroot}${prefix}/etc/${name}/wwsympa.conf" reinplace "s|#openssl /usr/local/bin/openssl|openssl ${prefix}/bin/openssl|g" \ "${destroot}${prefix}/etc/${name}/wwsympa.conf" } post-activate { # get rid of .turd files created by destroot.keepdirs because they cause problems in Sympa queues system "rm ${prefix}/var/${name}/spool/msg/.turd_sympa" system "rm ${prefix}/var/${name}/spool/bounce/.turd_sympa" system "rm ${prefix}/var/${name}/bounce/.turd_sympa" system "rm ${prefix}/var/${name}/arc/.turd_sympa" ui_msg "\n **** To complete Sympa installation **** You must read the documentation at ${prefix}/share/doc/${name}/index.html for full Sympa configuration information, however the installation steps are roughly as shown below. 1) Setup MySQL and prepare it for Sympa (for PostgreSQL, see documentation) Configure MySQL (new MySQL installs) sudo -u mysql ${prefix}/lib/mysql5/bin/mysql_install_db Start MySQL: sudo ${prefix}/share/mysql5/mysql/mysql.server start Set MySQL to start at system boot (optional) sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist Set a MySQL root password: Follow the instructions that were given after you executed 'mysql_install_db' above. Create a Sympa MySQL user ... mysql5 -u root -p (login with new root password when prompted) mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on sympa.* to sympa@localhost; mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on sympa.* to sympa; mysql> quit; Create the Sympa database: cat ${prefix}/share/sympa/script/create_db.mysql | mysql5 -u root -p sympa Verify Sympa DB: mysql5 -u root -p mysql> use sympa; mysql> show tables; mysql> exit; NOTE: MySQL must start before Apache because of wwsympa.fcgi 2) Setup Apache 2 & FastCGI cd ${prefix}/apache2/conf sudo cp httpd.conf.sample httpd.conf Modify the ${prefix}/apache2/conf/httpd.conf file Add directives and ScriptAlias: IPCCommTimeout 120 MaxProcessCount 2 SetHandler fcgid-script ScriptAlias /sympa ${prefix}/share/sympa/cgi-bin/wwsympa.fcgi Start Apache 2: (Turn off personal web sharing first!) sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist NOTE: The Apache user and group must be the same as the file wwsympa.fcgi. Sympa files are owned by user/group 'www' so the apache user and group must be www unless you chown Sympa files to something else. 3) Enable Postfix (not covered), setup Sympa robot aliases, & list alias config Robot aliases: sympa: \"| ${prefix}/bin/sympa/queue sympa@mydomain.org\" listmaster: \"| ${prefix}/bin/sympa/queue listmaster@mydomain.org\" bounce+*: \"| ${prefix}/bin/sympa/bouncequeue sympa@mydomain.org\" sympa-request: sympa-owner: Activate the robot aliases with the command \"sudo newaliases\" List alias config: (automatic list aliases) Add these statements to /etc/postfix/main.cf alias_maps = hash:/etc/aliases,hash:${prefix}/etc/${name}/sympa_aliases alias_database = hash:/etc/aliases,hash:${prefix}/etc/${name}/sympa_aliases Activate the new configuration with the command \"sudo postfix reload\" 4) Edit ${prefix}/etc/sympa/sympa.conf variables domain listmaster email db_password wwsympa_url 5) Edit ${prefix}/etc/sympa/wwsympa.conf variables title default_home 6) Add a statement to OS X's syslog.conf file to support Sympa log files local1.* ${prefix}/var/log/sympa/sympa.log 7) Start the Sympa daemon sudo launchctl load -w /Library/LaunchDaemons/org.macports.sympa.plist 8) Have Sympa generate a listmaster password Go to http://localhost/sympa. Click the \"First login ?\" link, then enter the listmaster address you set in the sympa.conf file, and click \"Send me my password\" and retrieve the password in your inbox. 9) Login to WWSympa at http://localhost/sympa with the listmaster address and then change the password and setup your lists. ------------------------------------------------- File Locations: Executable files -> ${prefix}/bin/${name} CGI directory -> ${prefix}/share/${name}/cgi-bin Configuration files -> ${prefix}/etc/${name} Sample files -> ${prefix}/share/${name}/sample Documentation directory -> ${prefix}/share/doc/${name} Expl (also spool/pid/bounce/archive) directories -> ${prefix}/var/${name} \n" }