SharePoint 2013 : Email notifications are not sent (from My Site's newsfeed)

sharepoint2013 Context : Users of your SharePoint web applications can receive email alerts, but they are never notified by all the « My Site » activities, such as « Someone has started following you » or « Someone has mentioned you ».
In the SharePoint logs (ULS), you can see errors like:
Failed attempt x sending mail to recipients: surname.name@mycompany.com. Mail Subject: NAME Surname mentioned you in a conversation. Error: SmtpException while sending email: System.Net.Mail.SmtpException: Mailbox unavailable. The server response was: 5.7.1 Client does not have permissions to send as this sender
Solution : These notifications seem to be sent in an authenticated way, by the app pool service account (unlike the standard emails (alerts) that use the address defined in the « outcoming email » in central administration, in an anonymous way). So you have to add the right « Send-As » to this account in Exchange.
NB : If it doesn’t work, grant this right to the SharePoint Timer service account as well. I still have a doubt on this one :/
Source : Technet forum

IIS : Erreur lors de la déclaration de l'identité d'un pool d'application

iisSur un serveur qui fonctionnait parfaitement (c’est à dire que IIS tourne et les sites répondent), je crée un nouveau pool d’application avec un compte d’annuaire comme identité. Et là boom, erreur de type « Données incorrectes » (HRESULT : 0x80090005) :
iis_bad_data
Ou plus sexy en Powershell :
iis_bad_data_ps
Dans un premier temps, on pourrait croire que le mot de passe du compte est erroné. Mais ce n’est pas le cas. Quand cette erreur survient, le serveur a déjà vérifié la validité du compte.
Comment IIS encrypte les mots de passe ?
IIS encrypte les mots de passe en utilisant différents providers qui sont stockées dans le fichier applicationHost.config (%SystemRoot%System32inetsrvconfig), dans la section <configProtectedData>, par exemple :

<add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="*****" />

Le provider « AesProvider » est utilisé pour crypter et décrypter les sections system.webServer.
Le provider « IISWASOnlyRsaProvider » est utilisé pour crypter et décrypter les sections dans le applicationHost.config.
Quant aux clés d’encryption, elles sont dans C:ProgramDataMicrosoftCryptoRSAMachineKeys, et elles sont uniques à chaque serveur !
Conclusion : Cette erreur viendrait du fait que les providers décrits dans applicationHost.config ne correspondent plus aux clés du serveur.
Que s’est-il passé ?
Il y a évidemment plusieurs scénarii qui aboutissent à ce problème, mais le plus simple est le suivant : le fichier applicationHost.config a été écrasé à partir d’une copie d’un autre serveur.
Comment résoudre ?
Il y a plusieurs solutions aussi, plus ou moins douloureuses :
Restaurer le fichier applicationHost.config s’il a été sauvegardé,
Réinstaller le rôle « Serveur web »,
Importer également les clés du serveur d’origine. Cet article explique bien le problème et la manipulation à faire.
Un autre article intéressant explique tout cela en détail : MachineKeys on IIS 7.x : Inside Out.

SharePoint : Notification mails are not sent

English version

Symptoms : notification mails are not sent (but subscription notifications are).
Diagnosis : There are multiple causes that can be explained here : blogs.technet.com/b/steve_chen. But in my case, it was different.
Solution : Here I’m talking about a very specific case. Consider a farm consisting of 4 servers: 1 SQL Server, 1 admin server, one intranet front-end server and one front-end server in the DMZ for extranet.
What you should know is that shipments of alerts are managed by a single server (as opposed to what we see in « Central Administration> Operations> Timer Job Status »).
To find out which server handles alerts’ shipments, launch this SQL request on any content database :

select * from TimerLock

This query will return a server name : this is the one who sends the alerts.
NB: Unlike subscription mails that – I think – are sent by the administration server.
So for some unknown reason, the Intranet server that manages the sending of these messages has stopped doing it, and suddenly it’s the front DMZ that has taken over. But since he was not at all set up for it (firewall, etc.)., alerts were not sent anymore.
Thus, to assign new shipments alert to the other front, you must disable the service timer on the current one:

NET STOP "Windows SharePoint Services Timer"

And finally, the front intranet will resume over.

Article en français

Symptômes : Les mails d’alerte ne sont plus envoyés (mais les notifications d’abonnement elles, sont bien envoyées).
Diagnostique : Les causes sont multiples. Cet article en parle très bien.
Solution : Ici je vais parler d’un cas bien spécifique. Prenons une ferme composée de 4 serveurs : 1 SQL Server, 1 serveur d’administration, 1 serveur frontal intranet et 1 serveur frontal en DMZ pour l’extranet.
Ce qu’il faut savoir, c’est que les envois d’alertes sont gérés par un seul serveur (contrairement à ce qu’on peut voir dans « Administration centrale > Opérations > Etat du travail du minuteur »). Ceci est bien expliqué ici.
Pour savoir quel serveur gère les envois d’alertes, il faut consulter le verrou actif sur le minuteur :

select * from timerlock

(à lancer sur n’importe quelle BDD de contenu, ou du moins celle dont le site refuse d’envoyer les alertes).
Cette requête va renvoyer un nom de serveur : c’est celui-ci qui s’occupe d’envoyer les alertes.
NB : Contrairement au mail de notification d’abonnement qui – je pense – est envoyé par le serveur d’administration.
Donc pour une raison inconnue, le serveur Intranet qui gérait l’envoi de ces mails a cessé de le faire, et du coup c’est le frontal en DMZ qui a pris le relais. Mais vu qu’il n’était pas du tout configuré pour cela (pare-feu, etc.), les alertes n’étaient plus envoyées.
Ainsi, pour confier de nouveau les envois d’alertes à un l’autre frontal, il faut désactiver le service timer sur celui en cours :

NET STOP "Windows SharePoint Services Timer"

Et finalement, le frontal intranet reprendra le relais.
 

SharePoint sous IIS 7 : "Ouvrir avec l'explorateur Windows" ne fonctionne pas

Explorer View
Symptômes : Il peut y avoir de multiples raisons pour que la vue « Explorer » d’une bibliothèque ne fonctionne pas, avec de multiples solutions (souvent côté client) disponibles sur Internet.
Cependant le problème peut être côté serveur, notamment dans le cas d’un hébergement sous Windows Server 2008 et IIS 7 (+ client IE8).
Explication : SharePoint possède son propre moteur WebDAV via un filtre ISAPI. Il faut donc désactiver le rôle « serveur WebDAV » par défaut de Windows 2008.
Solution : Aller sur le « Gestionnaire de serveur » > « Rôles » > « Supprimer des services de rôles » > « Publication WebDAV ».
KB Microsoft
Article très complet
Sujet sur forum technet

Pense-bête Oracle 10g

Oracle ! Ô désespoir !
1. Passer du mode ARCHIVELOG à NOARCHIVELOG
# sqlplus / as sysdba

// VERIFIER LE MODE :
SQL> select log_mode from v$database;


// CHANGER LE MODE :
SQL> shutdown immediate;
SQL> startup mount;
SQL> ALTER DATABASE noarchivelog;
SQL> ALTER DATABASE open;

2. Création d’un User / Schema et son Tablespace
Création avec temporary tablespace, sous SQLPlus par ex. :
SQL> create tablespace d_tbl datafile '/oracle/oradata/INSTANCE/datafile/d_tbl.dbf' size 10M autoextend on next 10M;
SQL> create tablespace i_tbl datafile '/oracle/oradata/INSTANCE/datafile/i_tbl.dbf' size 10M autoextend on next 10M;
SQL> create temporary tablespace t_tbl tempfile '/oracle/oradata/INSTANCE/datafile/t_tbl.dbf' size 10M autoextend on next 10M;
SQL> create user DB_USER identified by DB_USER_PWD default tablespace d_tbl temporary tablespace t_tbl;
SQL> grant connect, resource, create synonym, create view, create materialized view to  DB_USER;

// SUPPRESSION COMPLETE :
> drop user DB_USER cascade;
// Modification de mot de passe :
> alter user DB_USER identified by rYFrvfFb;
3.    Commandes SQL pratiques
3.1.    Liste des users :
SQL> select USERNAME, USER_ID,ACCOUNT_STATUS from DBA_USERS order by USER_ID;
3.2.    Vérifier que l’instance Oracle tourne
# sqlplus 'connect / as sysdba';
SQL*Plus: Release 9.2.0.8.0 – Production on Sat Dec 1 19:08:55 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter password:
Connected to an idle instance.
SQL> select status from v$instance;
*
ERROR at line 1:
ORA-01034: ORACLE not available
–> L’instance Oracle ne tourne pas. Sinon vérifier la liste des processus :
 # ps -aef |grep pmon
3.3.    ERREUR : "Startup : LRM-00109: could not open parameter file '/oracle/product/10.2/rdbms/dbs/initXXX.ora'"
Il faut ajouter le chemin du spfile à la commande startup :
# startup pfile=$ORACLE_HOME/dbs/spfileDBBAS.ora;

EasyPHP / MySql : Plantage d’apache exit status 3221225477

Boom
Sous Easy-php (les dernières versions > 5), une erreur dans le code PHP peut faire crasher Apache…
Si la trace est la suivante : Parent: child process exited with status 3221225477 -- Restarting., le problème vient d’une mauvaise utilisation du module mysql (qui était plus tolérant dans les versions antérieures).
Ainsi, veiller à ce que les ouvertures et fermetures des connections sql se fassent ainsi :


$connexion = mysql_connect($host,$login,$passwd);
...
mysql_close($connexion);

MOSS 2007 : Multi-linguisme

Do you speak moss the most ?
Comment créer un site en plusieurs langues sous MOSS ?
Voici les étapes à suivre, pour la création d’un site simple, à partir de zéro :

  • Définir toutes les langues qui seront utilisées, et installer les Language Pack adéquats dans la ferme SharePoint.
  • Créer son app. web + la collection de site associée (de modèle publication). C’est au moment de la création de la collection de site que la langue principale est choisie.
  • Dans le site : Créer une première étiquette de variation (la principale, par ex le français).
  • Générer la hiérarchie.
  • Construire son site sur la variation principale.
  • Puis enfin créer les étiquette de variantes (en choisissant les langues adéquates) et générer la hiérarchie.
  • Reste à traduire les contenus dans les n variations créées.

Quelques remarques :

  • Une variation n’est qu’un sous-site synchronisé avec un site principal (la variation principale).
  • Par synchronisation, il faut comprendre que si il y a une modification, les auteurs des sous-sites variants seront alertés (workflow).

Pour en savoir plus sur les variations, voir cet article en deux parties :
Les variations – Page 1
Les variations – Page 2
Egalement trouvé sur un forum, cette bonne synthèse .