SamSoul Posté(e) le 15 août 2010 Posté(e) le 15 août 2010 Bonjour, J'essaye depuis quelques temps de param 0 Citer
cricx Posté(e) le 16 août 2010 Posté(e) le 16 août 2010 Bonjour, J'essaye depuis quelques temps de paramétrer Postfix de MailStation pour envoyer des mails en SMTPS (SSL/TLS) avec Thunderbird. Je dé-commente les lignes suivantes de master.cf : #smtps inet n - n - - smtpd # -o smtpd_tls_wrappermode=yes Quand je relance MailStation la ligne smtps inet n - n - - smtpd disparait et lorsque j'essaye d'envoyer un message en SSL/TLS par le port 465 avec Thunderbird ça ne marche pas. Dans le log (/var/log/messages) voilà ce que postfix renvoie quand je le relance : Aug 15 22:23:31 postfix/master[5788]: warning: /usr/syno/mailstation/etc/master.cf: logical line must not start with whitespace: " -o smtpd_tls_wrappermode=yes" La "ligne logique" devrait être smtps inet n - n - - smtpd et -o smtpd_tls_wrappermode=yes la suite de cette ligne d'après la syntaxe de master.cf. Le pire c'est que j'ai déjà réussi à activer le SMTPS il y a quelques temps mais je n'ai pas le souvenir d'avoir eu des problèmes avec la ligne qui disparait. Pour le moment j'arrive à utiliser le SMTP en STARTTLS avec Thunderbird par le port 587 en dé-commentant les lignes suivantes (toujours dans master.cf) : #submission inet n - n - - smtpd # -o smtpd_tls_security_level=encrypt C'est déjà ça mais j'aimerais bien comprendre le pourquoi du comment. Le problème ne peut pas venir d'un blocage de port, le syno est en DMZ au moment des tests. J'ai déjà cherché partout et je tombe à cours d'idées, c'est pour ça que je me tourne vers vous. Si je n'ai pas été assez clair dites-le-moi. Merci d'avance. Sam. il faut faire attention à la syntaxe des lignes longues ! "A logical line starts with non-whitespace text. A line that starts with whitespace continues a logical line" (une ligne logique commence par un caractère autre qu'un espace, une ligne qui débute par un espace est la suite de la ligne précédente donc pas d'espace devant smtps un espace devant -o tu peux aussi tout mettre sur la même ligne ! 0 Citer
SamSoul Posté(e) le 16 août 2010 Auteur Posté(e) le 16 août 2010 il faut faire attention à la syntaxe des lignes longues ! "A logical line starts with non-whitespace text. A line that starts with whitespace continues a logical line" (une ligne logique commence par un caractère autre qu'un espace, une ligne qui débute par un espace est la suite de la ligne précédente donc pas d'espace devant smtps un espace devant -o tu peux aussi tout mettre sur la même ligne ! Merci pour ta réponse. C'est bien ce que je faisais, pas d'espace devant le smtps et un espace devant le -o. Mais quand je relance MailStation la ligne logique "smtps ..." disparait donc la ligne suivante, avec un espace devant, se retrouve seule alors que normalement elle devrait continuer la ligne "smtps ...". J'ai déjà essayé de tout mettre sur une même ligne et là c'est toute la ligne qui disparait "smtps ..." + "-o...". Sam. 0 Citer
cricx Posté(e) le 16 août 2010 Posté(e) le 16 août 2010 Encore merci. J'ai dé-commenté les lignes et ensuite j'ai fait un chmod 444 master.cf pour le mettre en -r--r--r--. Je relance MailStation et surprise, master.cf se remet comme avant en -rw-r--r-- et la ligne a été supprimée à nouveau. Pour relancer seulement postfix et pas tout le package MailStation je ne vois pas comment faire. Quand MailStation est lancé un ps | grep postfix me donne : 9485 postfix 2208 S pickup -l -t fifo -u 9486 postfix 2248 S qmgr -l -t fifo -u Sam. le démon est master. mais il faut lancer avec la commande postfix : /usr/syno/mailstation/sbin/postfix stop puis /usr/syno/mailstation/sbin/postfix start dans une console root nota : vérifie que le smtps est activé dans l'interface web (ou dans le fichier /etc/synoinfo.conf), cherche ssl. 0 Citer
SamSoul Posté(e) le 16 août 2010 Auteur Posté(e) le 16 août 2010 le démon est master. mais il faut lancer avec la commande postfix : /usr/syno/mailstation/sbin/postfix stop puis /usr/syno/mailstation/sbin/postfix start dans une console root nota : vérifie que le smtps est activé dans l'interface web (ou dans le fichier /etc/synoinfo.conf), cherche ssl. Un énorme merci ! En fait il fallait faire un postfix reload comme indiqué dans master.cf (un postfix stop puis postfix start ferait la même chose je pense) et tout marche. La ligne est prise en compte au relancement de Postfix et elle n'est plus supprimée. Par contre si on relance MailStation elle est supprimée. Il suffira de garder une copie de master.cf et de faire ce qu'il faut à chaque relancement de MailStation. Encore merci. J'aurais du chercher à arrêter et lancer postfix avant de poster sur le forum ... Sam. 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 dans /etc/synoinfo.conf, tu as ces lignes : eventport="25" eventusessl="no" voir si en mettant yes dans eventusessl et 465 dans eventport ça laisse la ligne dans master.cf En modifiant ces lignes que ce soit après un reboot ou après un relancement de MailStation la ligne de master.cf est supprimée. Sam. 0 Citer
cricx Posté(e) le 17 août 2010 Posté(e) le 17 août 2010 En modifiant ces lignes que ce soit après un reboot ou après un relancement de MailStation la ligne de master.cf est supprimée. Sam. il faudrait regarder ce que fait le script syno de démarrage de postfix... je vais chercher un peu... dans le script de démarrage de mailstation, on trouve : SmtpAuth=`/bin/get_key_value /etc/synoinfo.conf smtpd_sasl_auth_enable` if [ "x$SmtpAuth" != "xyes" ]; then SmtpAuth="no" fi vérifier que dans /etc/synoinfo.conf on a bien smtpd_sasl_auth_enable=yes 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 il faudrait regarder ce que fait le script syno de démarrage de postfix... je vais chercher un peu... Merci pour tout. Si je peux t'aider n'hésite pas. Sam. 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 il faudrait regarder ce que fait le script syno de démarrage de postfix... je vais chercher un peu... dans le script de démarrage de mailstation, on trouve : SmtpAuth=`/bin/get_key_value /etc/synoinfo.conf smtpd_sasl_auth_enable` if [ "x$SmtpAuth" != "xyes" ]; then SmtpAuth="no" fi vérifier que dans /etc/synoinfo.conf on a bien smtpd_sasl_auth_enable=yes J'avais pas vu que t'avais édité ton post. "smtpd_sasl_auth_enable=" était déjà sur yes Sam. 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 rien trouvé d'autre (du moins dans ma version du firmware). je pense qu'il faut regarder dans le script de démarrage de mailstation (il est dans /usr/local/etc/rc.d/) mais apparemment il ne touche pas à master.cf (du moins dans ma version du script) peux-tu poster ton script ? ou alors tu regardes toi-même ! Voilà le script : J'utilise le firmware 1161 sur mon 710+ avec la version 20100407-018 de MailStation. #!/bin/sh SASLAUTHD=/usr/syno/mailstation/sbin/saslauthd POSTFIX=/usr/syno/mailstation/sbin/postfix DOVECOT=/usr/syno/mailstation/sbin/dovecot SPAMD=/usr/syno/mailstation/bin/spamd PID_SPAMD=/var/run/spamd.pid SPOOL_POSTFIX=/var/spool/postfix MailStationEnabled="/var/packages/MailStation/enabled" MailStationDir="/var/packages/MailStation/target" WebmailDesktop="/usr/syno/synoman/webman/3rdparty/MailStation" WebmailEnabled=`/bin/get_key_value /etc/synoinfo.conf webmail_enabled` SpamfilterEnabled=`/bin/get_key_value /etc/synoinfo.conf spamfilter_enabled` MailStationPostfix=${MailStationDir}/postfix Protocols="" RegenConf() { PostfixConf="/usr/syno/mailstation/etc/main.cf" PostfixMasterCf="/usr/syno/mailstation/etc/master.cf" DovecotConf="/usr/syno/mailstation/etc/dovecot.conf" WebmailConf="${MailStationDir}/roundcubemail/config/main.inc.php" MailStationHostname=`/bin/get_key_value /etc/synoinfo.conf mailstation_hostname` if [ "x$MailStationHostname" = "x" ]; then MailStationHostname="localhost" fi SmtpAuth=`/bin/get_key_value /etc/synoinfo.conf smtpd_sasl_auth_enable` if [ "x$SmtpAuth" != "xyes" ]; then SmtpAuth="no" fi MessageSizeLimit=`/bin/get_key_value /etc/synoinfo.conf message_size_limit` if [ -z "$MessageSizeLimit" ]; then MessageSizeLimit=10240000 elif [ $MessageSizeLimit -eq 2048 ]; then MessageSizeLimit=2147483647 else MessageSizeLimit=`/usr/bin/expr ${MessageSizeLimit} \* 1048576` fi /bin/grep -Ev "^myhostname|^smtpd_sasl_auth_enable|^message_size_limit" ${PostfixConf} > /tmp/tempinfo echo "myhostname = ${MailStationHostname}" >> /tmp/tempinfo echo "smtpd_sasl_auth_enable = ${SmtpAuth}" >> /tmp/tempinfo echo "message_size_limit = ${MessageSizeLimit}" >> /tmp/tempinfo /bin/mv /tmp/tempinfo ${PostfixConf} /bin/grep -Ev "^smtp.*inet.*smtpd|^spamassassin" ${PostfixMasterCf} > ${PostfixMasterCf}.$ if [ "x${SpamfilterEnabled}" = "xyes" ]; then echo "smtp inet n - n - - smtpd -o content_filter=spamassassin" >> ${PostfixMasterCf}.$ echo "spamassassin unix - n n - - pipe user=spamfilter argv=/usr/syno/mailstation/bin/filter.sh -oi -f \${sender} \${recipient}" >> ${PostfixMasterCf}.$ else echo "smtp inet n - n - - smtpd" >> ${PostfixMasterCf}.$ fi mv ${PostfixMasterCf}.$ ${PostfixMasterCf} for key in imap imaps pop3 pop3s; do Enabled=`/bin/get_key_value /etc/synoinfo.conf ${key}_enabled` if [ "x$Enabled" = "xyes" ]; then Protocols="${Protocols} ${key}" fi done if [ "x$Protocols" != "x" ]; then sed "/^protocols/c\\protocols =${Protocols}" ${DovecotConf} > /tmp/tempinfo /bin/mv /tmp/tempinfo ${DovecotConf} fi WebmailSMTP=`/bin/get_key_value /etc/synoinfo.conf webmail_smtp_server` if [ -z "$WebmailSMTP" ]; then SMTP_SERVER="localhost" SMTP_PORT="25" else SMTP_SERVER=`echo ${WebmailSMTP} | cut -d':' -f1` SMTP_PORT=`echo ${WebmailSMTP} | cut -d':' -f2` if [ "${SMTP_PORT}" = "${WebmailSMTP}" ]; then SMTP_PORT="25" fi fi sed "/^\$rcmail_config\['mail_domain'\]/c\\\$rcmail_config['mail_domain'] = '${MailStationHostname}';" ${WebmailConf} > /tmp/tempinfo sed "/^\$rcmail_config\['smtp_server'\]/c\\\$rcmail_config['smtp_server'] = '${SMTP_SERVER}';" /tmp/tempinfo > /tmp/tempinfo.$ sed "/^\$rcmail_config\['smtp_port'\]/c\\\$rcmail_config['smtp_port'] = ${SMTP_PORT};" /tmp/tempinfo.$ > /tmp/tempinfo /bin/mv /tmp/tempinfo ${WebmailConf} } CheckEnv() { if [ -d ${SPOOL_POSTFIX} -a ! -L ${SPOOL_POSTFIX} ]; then if [ -d ${MailStationPostfix} ]; then # after upgrade patch rm -rf ${MailStationPostfix}/public ${MailStationPostfix}/private ${MailStationPostfix}/pid cp -a ${MailStationPostfix}/* ${SPOOL_POSTFIX}/ rm -rf ${MailStationPostfix} mv ${SPOOL_POSTFIX} ${MailStationPostfix} fi fi if [ ! -d ${MailStationPostfix} ]; then rm -rf ${MailStationPostfix} 2>/dev/null cp -a /var.defaults/spool/postfix ${MailStationPostfix} fi rm -rf ${SPOOL_POSTFIX} ln -s ${MailStationPostfix} ${SPOOL_POSTFIX} } StartDaemons() { if [ ! -f "${MailStationEnabled}" ]; then exit 0 fi CheckEnv RegenConf SmtpEnabled=`/bin/get_key_value /etc/synoinfo.conf smtp_enabled` if [ "x$SmtpEnabled" = "xyes" ]; then echo "Starting SASLAuthd..." $SASLAUTHD -a shadow echo "Starting Postfix..." $POSTFIX start if [ "x${SpamfilterEnabled}" = "xyes" ]; then ${SPAMD} -d -r ${PID_SPAMD} fi fi if [ "x$Protocols" != "x" ]; then echo "Starting Dovecot..." $DOVECOT fi rm -f $WebmailDesktop if [ "x$WebmailEnabled" = "xyes" ]; then ln -sf ${MailStationDir}/desktop $WebmailDesktop fi } StopDaemons() { dovecot_base=`$DOVECOT -a|grep '^base_dir: '|sed 's/^base_dir: //'` dovecot_pid=$dovecot_base/master.pid saslauthd_pid=/var/run/saslauthd/saslauthd.pid if [ -f $saslauthd_pid ]; then echo "Stopping SASLAuthd..." kill `cat $saslauthd_pid` fi echo "Stopping Postfix..." $POSTFIX stop kill `cat ${PID_SPAMD}` if [ -f $dovecot_pid ]; then echo "Stopping Dovecot..." kill `cat $dovecot_pid` fi rm -f $WebmailDesktop } case "$1" in start) StartDaemons if [ -n "$SYNOPKG_PKGNAME" -a "x$WebmailEnabled" = "xyes" ]; then /usr/syno/etc/rc.d/S97apache-user.sh restart > /dev/null 2>&1 fi ;; stop) StopDaemons if [ -n "$SYNOPKG_PKGNAME" -a "x$WebmailEnabled" = "xyes" ]; then /usr/syno/etc/rc.d/S97apache-user.sh restart > /dev/null 2>&1 fi ;; restart) StopDaemons sleep 1 StartDaemons ;; status) if [ -f "${MailStationEnabled}" ]; then exit 0 fi exit 1 ;; *) echo "Usage: $0 {start|stop|restart|status}" >&2 exit 1 ;; esac exit 0 Je jette aussi un coup d'œil. EDIT : la seule ligne qui contient master.cf est la ligne 19. PostfixMasterCf="/usr/syno/mailstation/etc/master.cf" Ensuite on retrouve PostfixMaster.Cf plusieurs fois dans le script. /bin/grep -Ev "^smtp.*inet.*smtpd|^spamassassin" ${PostfixMasterCf} > ${PostfixMasterCf}.$ if [ "x${SpamfilterEnabled}" = "xyes" ]; then echo "smtp inet n - n - - smtpd -o content_filter=spamassassin" >> ${PostfixMasterCf}.$ echo "spamassassin unix - n n - - pipe user=spamfilter argv=/usr/syno/mailstation/bin/filter.sh -oi -f \${sender} \${recipient}" >> ${PostfixMasterCf}.$ else echo "smtp inet n - n - - smtpd" >> ${PostfixMasterCf}.$ fi mv ${PostfixMasterCf}.$ ${PostfixMasterCf} Dans la ligne juste au-dessus mv renomme ${PostfixMasterCf}.$ en ${PostfixMasterCf} ou il écrase ${PostfixMasterCf} par ${PostfixMasterCf}.$ ? Je vais chercher à quoi servent les $ et le point. Si ici la fonction de mv est d'écraser ça pourrait venir de là non ? Mais les paramètres de spamassassin devrait-être rentrés à la main. Sam. 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 c'est probablement là que ça se passe : /bin/grep -Ev "^smtp.*inet.*smtpd|^spamassassin" ${PostfixMasterCf} > ${PostfixMasterCf}.$ if [ "x${SpamfilterEnabled}" = "xyes" ]; then echo "smtp inet n - n - - smtpd -o content_filter=spamassassin" >> ${PostfixMasterCf}.$ echo "spamassassin unix - n n - - pipe user=spamfilter argv=/usr/syno/mailstation/bin/filter.sh -oi -f \${sender} \${recipient}" >> ${PostfixMasterCf}.$ else echo "smtp inet n - n - - smtpd" >> ${PostfixMasterCf}.$ fi mv ${PostfixMasterCf}.$ ${PostfixMasterCf} il y a modification du fichier master.cf pour spamassassin. il suffit de modifier ainsi : /bin/grep -Ev "^smtp .*inet.*smtpd|^spamassassin" ${PostfixMasterCf} > ${PostfixMasterCf}.$ if [ "x${SpamfilterEnabled}" = "xyes" ]; then echo "smtp inet n - n - - smtpd -o content_filter=spamassassin" >> ${PostfixMasterCf}.$ echo "spamassassin unix - n n - - pipe user=spamfilter argv=/usr/syno/mailstation/bin/filter.sh -oi -f \${sender} \${recipient}" >> ${PostfixMasterCf}.$ else echo "smtp inet n - n - - smtpd" >> ${PostfixMasterCf}.$ fi mv ${PostfixMasterCf}.$ ${PostfixMasterCf} (ajout d'un espace après smtp dans la ligne grep, essayer éventuellement avec \s (^smtp\s.* le reste idem) Que ce soit avec un espace ou avec \s la ligne de master.cf est toujours supprimée au relancement de MailStation. Sam. 0 Citer
cricx Posté(e) le 17 août 2010 Posté(e) le 17 août 2010 Que ce soit avec un espace ou avec \s la ligne de master.cf est toujours supprim 0 Citer
SamSoul Posté(e) le 17 août 2010 Auteur Posté(e) le 17 août 2010 Pas trop le temps de chercher plus et je n'ai pas la mm version que toi, mais c'est ma qu'im faut chercher. C'est pas grave, tu m'as déjà bien aidé comme ça. Il me suffit d'utiliser le petit script dont je me servais pour relancer correctement postfix après les tests et de le faire exécuter dans le script de démarrage de MailStation. Voilà le script en question, c'est pas grand chose mais ça facilite la vie. #!/bin/sh rm -f /usr/syno/mailstation/etc/master.cf cp /usr/syno/mailstation/etc/master.cf.d /usr/syno/mailstation/etc/master.cf /usr/syno/mailstation/sbin/./postfix reload Avec la ligne "smtps*" et tous ces arguments dé-commentée dans master.cf.d. Le seul problème c'est qu'il faut faire toute la configuration dans master.cf.d, tout le reste est ecrasé. Sinon je peux m'amuser à remplacer juste les lignes qu'il faut quand master.cf mais j'améliorerai le script au fur à mesure, quand j'apprendrai comment faire. Merci pour tout. Sam. 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.