pro / dkim-exchange Goto Github PK
View Code? Open in Web Editor NEWDKIM Signing Agent for Microsoft Exchange Server
License: Other
DKIM Signing Agent for Microsoft Exchange Server
License: Other
im trying to install 2.0.0-beta.2 with Configuration.DkimSigner.exe
Either if I choose to download from GUI or to install from zip, the same happens:
Error at Copying new files:
"Value can not be null"
"Parameter: path2"
Im using EDGE ROLE of Exchange Server 2010 SP2 (spanish) in Windows Server 2008 R2
The gui seems to start copying files to "C:\Program Files\Exchange DkimSigner\Configuration"
the files copied until error are:
Configuration.DkimSigner.exe
Configuration.DkimSigner.pdb
Configuration.DkimSigner.exe.config
Ionic.Zip.dll
System.Management.Automation.dll
Hope this may help
Hi,
our transport services keeps crashing because of a poison message from dkim:
event 10003, MSExchangeTransport
The transport process failed during message processing with the following call stack: System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Configuration.DkimSigner.Properties.Resources.resources" was correctly embedded or linked into assembly "ExchangeDkimSigner" at compile time, or that all the satellite assemblies required are loadable and fully signed.
at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
at Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized(CategorizedMessageEventSource source, QueuedMessageEventArgs e) in d:\Programmieren\dkim-exchange\Src\Exchange.DkimSigner\DkimSigningRoutingAgent.cs:line 61
at Microsoft.Exchange.Data.Transport.Routing.RoutingAgent.Invoke(String eventTopic, Object source, Object e)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.Dispatcher.Invoke(MExSession session)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExSession.Invoke()
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExSession.AsyncInvoke(Object state)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExSession.BeginInvoke(String topic, Object source, Object e, AsyncCallback callback, Object callbackState)
at Microsoft.Exchange.Transport.Categorizer.MExEvents.RaiseEvent(IMExSession mexSession, String eventTopic, AsyncCallback callback, Object state, Object[] contexts)
at Microsoft.Exchange.Transport.Categorizer.MExEvents.RaiseOnCategorizedMessage(TaskContext context, AsyncCallback callback, MailItem mailItem)
at Microsoft.Exchange.Transport.Categorizer.CategorizerComponent.Stage8OnCategorizedMessage(TransportMailItem transportMailItem, TaskContext taskContext)
at Microsoft.Exchange.Transport.Categorizer.TaskContext.Invoke()
at Microsoft.Exchange.Transport.Categorizer.Job.ExecutePendingTasks()
at Microsoft.Exchange.Transport.Categorizer.CatScheduler.JobThreadEntry(Object ignored)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
if you would like to update your project with Exchange 2013 CU3, i've uploaded a compiled version of your project here http://sdrv.ms/1b7Ixsv
Create a simple GUI with following features:
Hello,
If I need to add a domain to the current setup do I need to uninstall/reinstall and change the config file or do I just update the config file with the changes?
Does each domain need it's own set of keys or can i use the same key file?
Wally
Instead of showing an empty TextBox for the available version during version fetch, we should show something like "loading" and even better a loading spinner.
Test it by disabling your internet connection and wait for the timeout.
The install.ps1
and uninstall.ps1
need to be updated for Version 2.0.0
settings.xml
DkimSigner.Configuration.exe
The optimal steps to update the app is:
--upgrade
and current install path, then close currentHello,
Firstly i would like to tell that this is a great initiative and a very promising project, so thank you for bringing DKIM to Exchange environments. And for FREE.
We may have found a problem with the DKIM module that is related to messages containing accented characters when they are received by SMTP through an internal Receive Connector. DKIM works flawlessly when sending messages from Outlook and OWA, even with accented characters. The problem is related only to internal relaying via a Receive Connector and only with HTML code.
Accented chars, such as áéíóú are getting translated to ????? (question marks).
And the funniest thing: even accented characters written in HTML code, such as á ; é ; and so on are also being translated to question marks. (!)
This problem happens only when DKIM dll is activated as a Transport Agent.
Is there anything i could adapt on my e-mail system to make accented characters work with Receive Connectors and DKIM dll?
Any clues?
Add Unit Tests (usable by Travis CI) to test functionality of Signing, Regex, Configuration Errors....
Tried to install on Exchange 2007. Should that work, too?
When installing the transport agent I receive an error. The TransportAgentFactory type doesnt exist. It has to be a transport-AgentFactory .net class.
Install-TransportAgent : Der TransportAgentFactory-Typ 'Exchange.DkimSigner.Dkim
SigningRoutingAgentFactory' ist nicht vorhanden. Er muss dem Microsoft .NET-Kla
ssentyp der Transport-Agentfactory entsprechen.
Parametername: TransportAgentFactory
Bei Zeile:1 Zeichen:23
Is there any way to make this work? Thank you!
During the Install-TransportAgent and subsequently Enable-TransportAgent i get the following error:
[PS] C:\Users\Administrator.XXX\Desktop\dkim-exchange-fix-exchange2013>Install-TransportAgent -Name "Exchange DkimSigner" -TransportAgentFactory "Exchange.DkimSigner.DkimSigningRoutingAgentFactory" -AssemblyPath "C:\Program Files\Exchange DkimSigner\ExchangeDkimSigner.dll"
Die Datei oder Assembly "file:///C:\Program Files\Exchange DkimSigner\ExchangeDkimSigner.dll" oder eine Abhängigkeitdavon wurde nicht gefunden. Der Vorgang wird nicht unterstützt. (Ausnahme von HRESULT: 0x80131515)
+ CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], FileLoadException
+ FullyQualifiedErrorId : [Server=XXX,RequestId=dd851844-d037-4c91-b2cf-b021c1fef23f,TimeStamp=29.11.2013 14:42:24] DA63F88F,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent
+ PSComputerName : xxx.de
It seems as though the dll was not compiled right for 2013. I copyed the dev .dll from the Exchange 2013 Server and compiled the project in Visual Studio 2012. The generated .dll works just fine.
I can provide the working .dll if required.
Hello,
I cannot start the Exchange Transport Service. If I disable or uninstall, I can start. Any suggestions? New install of Exchange 2010.
Wally
Hello,
I downloaded the latest version and it was not signing my email. I checked eventlog and found this below. I decided to roll-back to an older version and it worked fine.
Let me know if you need anything. Not sure how to check what version I installed but if you tell me how, I will check. The older version made me choose the version of Exchange.
The description for Event ID 0 from source Exchange DKIM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
Signing a mail item according to DKIM failed with an exception. Check the logged exception for details.
System.FormatException: The specified string is not in the form required for an e-mail address.
at System.Net.Mail.MailAddress.ParseValue(String address)
at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
at Exchange.DkimSigner.DefaultDkimSigner.CanSign(Stream inputStream)
at Exchange.DkimSigner.DkimSigningRoutingAgent.SignMailItem(MailItem mailItem)
at Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized(CategorizedMessageEventSource source, QueuedMessageEventArgs e)
the message resource is present but the message is not found in the string/message table
Hello!
dkim-exchange 2.0.0 RC1 in Configuration.DkimSigner/Domains show suggested DNS record only after creating new key and not on other cases. This is very inconvenient.
Also, the in the tab Information is displayed version 2.0.0, although I have installed version 2.0.0 (beta.4), and in the window About displays the version 2.0.0 RC1. I do not understand what I have installed version.
After installing this version I have not found information about DKIM in sent from me letters. I have exchange 15.0.995.29 (CUE 6). But this version is perfectly established on my server and does not lead to memory leaks, as was the case with previous versions.
Add about dialog in the GUI showing detailed version information and build date, link to repository, authors, ...
@AlexLaroche I just tested Version 1.7 (and 1.8) and it looks like since your relaxed implementation the signing is broken. Did you test your implementation when you finished it?
Add a setting to enable DKIM signing only for specific target domains.
E.g. if someone only wants to sign outgoing mails to yahoo.com and leave all others as they are.
Hello,
Where can I download the version for Exchange 2010 SP2? I saw there was a bug and then a fix and wondering if I can get that version. The newest version seems not to be working for me.
Wally
I get this error when trying to execute the first command in Exchange Management Shell. What step have I missed?
[PS] C:\Windows\system32>Install-TransportAgent -Name "Exchange DKIM" -TransportAgentFactory "Exchange.DkimSigner.DkimSi
gningRoutingAgentFactory" -AssemblyPath "C:\Program Files\Exchange-DKIM\Exchange.DkimSigner.dll"
The TransportAgentFactory type "Exchange.DkimSigner.DkimSigningRoutingAgentFactory" doesn't exist. The TransportAgentFa
ctory type must be the Microsoft .NET class type of the transport agent factory.
Parameter name: TransportAgentFactory
+ CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], ArgumentException
+ FullyQualifiedErrorId : 777A2C6B,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent
Hello (french here so sorry for my english i'll do my best),
I'm trying your project on an 2010 Exchange Server.
I had an issue on an incoming mail (from AOL) automatically forwarded to an external contact in GMAIL. The agent correctly signed the email, but gmail tried to authenticate the mail with aol public DKIM key instead of my own public key which is normal.
So in fact the agent should not add a signature in case of a forwarding to preserve the original authentication. I know in DMARC implementation forwarded emails SHOULD be whitelisted and not authenticated but it appears that gmail and others try to do it.
Have you encountered this problem? Any idea on how to fix it?
Thanx
PS: i'm trying to do more researchs
Some "out of office" messages going to Poison Queue for Exchange Agent 2.0. I'm not sure what modification have introduce this bug. I need to investigate the problem. I will correct this bug next week.
I got the whoel DNS thing without any problems but the private RSA key I have no clue how to import it. Cert Manager does not like the file no matte rwhat extension I put on it. For your solution how should I import the private key? I must be missing somethign silly but after 2 hours I decided not to fight it anymore.
I installed the DKIM 1.8.3 from the install.ps1 script for Exchange 2010 SP3 RU2 to match the Library 14.03.0158.001 for Exchange 2010 sp3 and after installation and configuration of the .config file and keys I'm unable to start the Exchange Transport process. The Event Log show the following error.
Watson report about to be sent for process id: 2712, with parameters: E12, c-RTL-AMD64, 14.03.0158.001, edgetransport, mscorlib, S.S.C.CryptographicException.ThrowCryptogaphicException, S.Reflection.TargetInvocationException, 6d6d, 02.00.50727.4927.
ErrorReportingEnabled: False
Just found an interesting KB article concerning installing 3rd party transport agents on Exchange 2013 SP1.
Maybe it helps with some issues i've seen on the email notifications:
http://support.microsoft.com/kb/2938053/en-us
"After you install Microsoft Exchange Server 2013 Service Pack 1 (SP1) or you upgrade an existing Microsoft Exchange Server 2013 installation to Exchange Server 2013 SP1, third-party or custom-developed transport agents cannot be installed correctly. Additionally, the Microsoft Exchange Transport service (MSExchangeTransport.exe) cannot start automatically. Specifically, you cannot enable third-party products that rely on transport agents. For example, you cannot enable anti-malware software or custom-developed transport agents.
When the installation fails, you also receive an error message that resembles the following:
The TransportAgentFactory type must be the Microsoft .NET class type of the transport agent factory..."
We should create wiki entries for:
Exchange 2013 CU5 is out: http://blogs.technet.com/b/exchange/archive/2014/05/27/released-exchange-server-2013-cumulative-update-5.aspx
Is it supported by dkim-exchange?
Thank you!
Currently the version check (installed version, available version) is performed in the GUI thread therefore the GUI blocks for a few seconds when starting up.
We should move this part into a separate thread.
Hi there,
Sorry to be so cheeky, but I tried to recompile dkim-exchange with VS 2012, under .Net 4.0 target. The procedure went fine, but Exchange won't send any more emails…!
I'm not exactly sure where to look for in the hundreds of various log files.
Any chance of a hand there?
Thanks for your help.
Regards
Sebastien
Following the instructions, I have the files in the file location mentioned. When I run the command for "Install-TransportAgent" this is the output error I receive:
"[PS] C:\Windows\system32>Install-TransportAgent -Name "Exchange DKIM" -TransportAgentFactory "Exchange.DkimSigner.DkimSi
gningRoutingAgentFactory" -AssemblyPath "C:\Program Files\Exchange DKIM\Exchange.DkimSigner.dll"
Install-TransportAgent : Could not load file or assembly 'file:///C:\Program Files\Exchange DKIM\Exchange.DkimSigner.dl
l' or one of its dependencies. The module was expected to contain an assembly manifest.
At line:1 char:23
Don't use TextField for headers to sign configuration but a list where the user can select/add entries.
The MessageBox 'Do you want to save the current configuration" should only show up if the user really changed something.
Hi,
I've upgraded our Exchange platform to CU5, so i needed to upgrade the transport agent to 2.0 beta 3.
It seems, that no dkim signatures are appended anymore to my mails. the event log shows "Exchange DKIM settings loaded: RsaSha1, Canonicalization Header Algorithm: Relaxed, Canonicalization Body Algorithm: Relaxed, Number of domains: 0". Why is my configuration (which works with 1.8.3) not accepted with the new agent version?
Btw. I did not install the agent with the installer (error path2 etc), but used the install.ps1.
Kind regards,
Peter
Sometimes the log files in an error like:
2014-09-15T15: 32: 24.000 Signing a mail item according to DKIM failed with an exception. Check the logged exception for details.
System.NullReferenceException: Object reference not set to an instance of an object.
in Exchange.DkimSigner.DkimSigningRoutingAgent.SignMailItem (MailItem mailItem) in d: \ Programmieren \ dkim-exchange \ Src \ Exchange.DkimSigner \ DkimSigningRoutingAgent.cs: line 80
in Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized (CategorizedMessageEventSource source, QueuedMessageEventArgs e) in d: \ Programmieren \ dkim-exchange \ Src \ Exchange.DkimSigner \ DkimSigningRoutingAgent.cs: line 56
Related to this line: https://github.com/Pro/dkim-exchange/blob/master/Src/Exchange.DkimSigner/DkimSigningRoutingAgent.cs#L80
After installing DkimSigner, I can't start the MSExchangeTransport service because the factory for DkimSigner aborts due to inability to load configuration. See below for the errors.
Error #1:
Failed to create agent factory for the agent 'Exchange DkimSigner' with error 'Failed to create type 'Exchange.DkimSigner.DkimSigningRoutingAgentFactory' from assembly 'C:\Program Files\Exchange DkimSigner\ExchangeDkimSigner.dll' due to error 'The configuration for Exchange Dkim Agent is not defined.'.'. Please verify the corresponding transport agent assembly and dependencies with correct version are installed.
Error #2:
Microsoft Exchange couldn't start transport agents. The Microsoft Exchange Transport service will be stopped. Exception details: Failed to create type 'Exchange.DkimSigner.DkimSigningRoutingAgentFactory' from assembly 'C:\Program Files\Exchange DkimSigner\ExchangeDkimSigner.dll' due to error 'The configuration for Exchange Dkim Agent is not defined.'. : Microsoft.Exchange.Data.ExchangeConfigurationException: Failed to create type 'Exchange.DkimSigner.DkimSigningRoutingAgentFactory' from assembly 'C:\Program Files\Exchange DkimSigner\ExchangeDkimSigner.dll' due to error 'The configuration for Exchange Dkim Agent is not defined.'. ---> System.Configuration.ConfigurationErrorsException: The configuration for Exchange Dkim Agent is not defined.
at Exchange.DkimSigner.DkimSigningRoutingAgentFactory.Initialize() in c:\Users\Alexandre\Documents\GitHub\dkim-exchange\Src\Exchange.DkimSigner\DkimSigningRoutingAgentFactory.cs:line 133
--- End of inner exception stack trace ---
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.FactoryTable.CreateAgentFactory(AgentInfo agentInfo)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.FactoryTable..ctor(IEnumerable agents)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.RuntimeSettings..ctor(MExConfiguration config, String agentGroup)
at Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExRuntime.Initialize(String configFile, String agentGroup, Boolean isBridgeHead, String installPath)
at Microsoft.Exchange.Transport.Categorizer.MExEvents.Initialize(String configFilePath)
at Microsoft.Exchange.Transport.Components.CategorizerMExRuntimeLoader.Load()
After I ran install, here are the files under C:\Program Files\Exchange DkimSigner:
ExchangeDkimSigner.dll
ExchangeDkimSigner.dll.config
ExchangeDkimSigner.pdf
I unblocked all three files. I also edited ExchangeDkimSigner.dll.config to appear as follows:
In addition, I created a subdirectory named "keys" and placed my private key under that subdirectory.
Any ideas why the factory is failing to load the config?
See also #58
I don't really mind if this issue will be fixed, since I've upgraded to SP3, but if anyone get this message:
The TransportAgentFactory type "Exchange.DkimSigner.DkimSigningRoutingAgentFactory" doesn't exist. The TransportAgentFactory type must be the Microsoft .NET class type of the transport agent factory.
Parameter name: TransportAgentFactory
+ CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], ArgumentException
+ FullyQualifiedErrorId : 78982B43,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent
It's simply because they are not running 2010 SP3.
Should be interessant to add a DomainKeys signer at your existing DKIM signer and use any combinaison between Dkim, DomainKeys or DKIM/DomainKeys as it's possible in the EA DomainKeys/DKIM solution from Email Architect.
There's an entry missing in the resources file. See message below from EventLog:
Fehler des Transportprozesses während der Nachrichtenverarbeitung mit dem folgenden Aufrufstapel: System.Resources.MissingManifestResourceException: Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass Configuration.DkimSigner.Properties.Resources.resources beim Kompilieren richtig in die Assembly ExchangeDkimSigner eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind.
bei System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
bei System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
bei System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
bei System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
bei Exchange.DkimSigner.DkimSigningRoutingAgent.WhenMessageCategorized(CategorizedMessageEventSource source, QueuedMessageEventArgs e) in d:\Programmieren\dkim-exchange\Src\Exchange.DkimSigner\DkimSigningRoutingAgent.cs:Zeile 61.
bei Microsoft.Exchange.Data.Transport.Routing.RoutingAgent.Invoke(String eventTopic, Object source, Object e)
bei Microsoft.Exchange.Data.Transport.Internal.MExRuntime.Dispatcher.Invoke(MExSession session)
bei Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExSession.AsyncInvoke(Object state)
bei Microsoft.Exchange.Data.Transport.Internal.MExRuntime.MExSession.BeginInvoke(String topic, Object source, Object e, AsyncCallback callback, Object callbackState)
bei Microsoft.Exchange.Transport.Categorizer.MExEvents.RaiseEvent(MExSession mexSession, String eventTopic, AsyncCallback callback, Object state, Object[] contexts)
bei Microsoft.Exchange.Transport.Categorizer.MExEvents.RaiseOnCategorizedMessage(TaskContext context, AsyncCallback callback, MailItem mailItem)
bei Microsoft.Exchange.Transport.Categorizer.CategorizerComponent.Stage8OnCategorizedMessage(TransportMailItem transportMailItem, TaskContext taskContext)
bei Microsoft.Exchange.Transport.Categorizer.TaskContext.Invoke()
bei Microsoft.Exchange.Transport.Categorizer.CatScheduler.JobThreadEntry(Object ignored)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state).
Hello!
Noticed a strange thing. When you send the first letter, gmaill (and the other servers) says there are no errors, dkim=pass. But for answered letters from these servers an error dkim=fail. At the same time the letter still has the dkim signature: dkim-signature: v=1; a=rsa-sha1; s=mail; d=secret.com; c=relaxed/relaxed; q=dns/txt; h=Date:From:Message-ID:Subject:To; bh=bla bla bla;
It's just I have this problem?
Exchange 2013 CUE6, Exchange DKIM Signer v2.0.2.
Thank you.
To avoid
The description for Event ID 0 from source Exchange DKIM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
showing up in the EventLog for each logged message, we need to register message files:
http://stackoverflow.com/questions/3412463/description-for-event-id-from-source-cannot-be-found.
http://www.eventsentry.com/blog/2008/04/event-log-message-files-the-de.html
The Agent needs the TransportHub or EdgeTransport role on Exchange.
We should check if those are installed. If not ask the user if he wants to install them anyways.
Before the user presses install, we should check if Exchange is even installed on the server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.